User.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.izouma.nineth.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.fasterxml.jackson.annotation.JsonView;
  5. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  6. import com.izouma.nineth.JsonView.UserView;
  7. import com.izouma.nineth.annotations.Searchable;
  8. import com.izouma.nineth.config.Constants;
  9. import com.izouma.nineth.enums.AuthStatus;
  10. import com.izouma.nineth.security.Authority;
  11. import com.izouma.nineth.utils.UserAuthoritySerializer;
  12. import io.swagger.annotations.ApiModel;
  13. import io.swagger.annotations.ApiModelProperty;
  14. import lombok.AllArgsConstructor;
  15. import lombok.Builder;
  16. import lombok.Data;
  17. import lombok.NoArgsConstructor;
  18. import org.hibernate.annotations.BatchSize;
  19. import javax.persistence.*;
  20. import javax.validation.constraints.Pattern;
  21. import javax.validation.constraints.Size;
  22. import java.io.Serializable;
  23. import java.math.BigDecimal;
  24. import java.util.HashSet;
  25. import java.util.Set;
  26. @Data
  27. @Entity
  28. @Table(indexes = {
  29. @Index(columnList = "phone"),
  30. @Index(columnList = "admin"),
  31. })
  32. @AllArgsConstructor
  33. @NoArgsConstructor
  34. @Builder
  35. @ApiModel(value = "用户", description = "用户")
  36. public class User extends BaseEntity implements Serializable {
  37. @Pattern(regexp = Constants.Regex.USERNAME)
  38. @Size(min = 1, max = 50)
  39. @Column(nullable = false, unique = true)
  40. @Searchable
  41. private String username;
  42. @Searchable
  43. private String nickname;
  44. private String avatar;
  45. @JsonView(UserView.Redis.class)
  46. private String password;
  47. private boolean del = false;
  48. @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
  49. @JoinTable(
  50. name = "user_authority",
  51. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
  52. inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
  53. @BatchSize(size = 20)
  54. @ExcelIgnore
  55. @JsonSerialize(using = UserAuthoritySerializer.class, as = HashSet.class)
  56. private Set<Authority> authorities = new HashSet<>();
  57. private String openId;
  58. private String sex;
  59. private String language;
  60. private String city;
  61. private String province;
  62. private String country;
  63. @Searchable
  64. private String phone;
  65. private String email;
  66. @ApiModelProperty("关注数量")
  67. private int follows;
  68. @ApiModelProperty("粉丝数量")
  69. private int followers;
  70. private int sales;
  71. @Column(columnDefinition = "TEXT")
  72. private String intro;
  73. private String bg;
  74. private Long authId;
  75. @ApiModelProperty("实名审核状态")
  76. @Enumerated(EnumType.STRING)
  77. private AuthStatus authStatus;
  78. private String nftAccount;
  79. @JsonIgnore
  80. private String kmsId;
  81. @JsonIgnore
  82. private String publicKey;
  83. @JsonIgnore
  84. private String tradeCode;
  85. private boolean admin;
  86. @ApiModelProperty("分成比例")
  87. @Column(precision = 10, scale = 2)
  88. private BigDecimal shareRatio;
  89. private String memberId;
  90. private String settleAccountId;
  91. private String invitorName;
  92. private String invitorPhone;
  93. private String inviteCode;
  94. private int minterProjectId;
  95. @ApiModelProperty(value = "邀请得空投")
  96. private Long invitor;
  97. @ApiModelProperty(value = "邀请数量")
  98. private int inviteNum;
  99. }