User.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.izouma.jiashanxia.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.izouma.jiashanxia.annotations.Searchable;
  5. import com.izouma.jiashanxia.config.Constants;
  6. import com.izouma.jiashanxia.enums.Member;
  7. import com.izouma.jiashanxia.security.Authority;
  8. import io.swagger.annotations.ApiModel;
  9. import io.swagger.annotations.ApiModelProperty;
  10. import lombok.AllArgsConstructor;
  11. import lombok.Builder;
  12. import lombok.Data;
  13. import lombok.NoArgsConstructor;
  14. import org.hibernate.annotations.BatchSize;
  15. import org.hibernate.annotations.NotFound;
  16. import org.hibernate.annotations.NotFoundAction;
  17. import javax.persistence.*;
  18. import javax.validation.constraints.Pattern;
  19. import javax.validation.constraints.Size;
  20. import java.io.Serializable;
  21. import java.math.BigDecimal;
  22. import java.util.HashSet;
  23. import java.util.List;
  24. import java.util.Set;
  25. @Data
  26. @Entity
  27. @AllArgsConstructor
  28. @NoArgsConstructor
  29. @Builder
  30. @ApiModel(value = "用户", description = "用户")
  31. public class User extends BaseEntity implements Serializable {
  32. @Pattern(regexp = Constants.Regex.USERNAME)
  33. @Size(min = 1, max = 50)
  34. @Column(nullable = false, unique = true)
  35. @Searchable
  36. private String username;
  37. @Searchable
  38. private String nickname;
  39. private String avatar;
  40. @JsonIgnore
  41. private String password;
  42. private boolean del = false;
  43. @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
  44. @JoinTable(
  45. name = "user_authority",
  46. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
  47. inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
  48. @BatchSize(size = 20)
  49. @ExcelIgnore
  50. private Set<Authority> authorities = new HashSet<>();
  51. private String openId;
  52. private String sex;
  53. private String language;
  54. private String city;
  55. private String province;
  56. private String country;
  57. @Searchable
  58. private String phone;
  59. private String email;
  60. @ApiModelProperty(value = "可提现收益")
  61. private BigDecimal amount;
  62. @ApiModelProperty(value = "暂存")
  63. private BigDecimal cacheAmount;
  64. @ApiModelProperty(value = "已提现收益")
  65. private BigDecimal withdraw;
  66. private Long parent;
  67. @ApiModelProperty(value = "企业id")
  68. private Long companyId;
  69. /*
  70. 绑定核销人员时需要
  71. */
  72. @ApiModelProperty(value = "品牌/企业id")
  73. private Long attractionsId;
  74. @ApiModelProperty(value = "是否团队创始人")
  75. private Boolean teamFounder;
  76. @ApiModelProperty("是否微信授权")
  77. private boolean wxAuthorized;
  78. @Enumerated(EnumType.STRING)
  79. @ApiModelProperty(value = "会员类型")
  80. private Member member;
  81. private boolean isVip;
  82. @Transient
  83. private String sessionKey;
  84. @ManyToOne(fetch = FetchType.LAZY)
  85. @JoinColumn(name = "companyId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
  86. @NotFound(action = NotFoundAction.IGNORE)
  87. private Company company;
  88. }