User.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.izouma.zhumj.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.fasterxml.jackson.annotation.JsonProperty;
  5. import com.izouma.zhumj.annotations.Searchable;
  6. import com.izouma.zhumj.config.Constants;
  7. import com.izouma.zhumj.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.Where;
  15. import javax.persistence.*;
  16. import javax.validation.constraints.Pattern;
  17. import javax.validation.constraints.Size;
  18. import java.io.Serializable;
  19. import java.time.LocalDateTime;
  20. import java.util.HashSet;
  21. import java.util.Set;
  22. @Data
  23. @Entity
  24. @AllArgsConstructor
  25. @NoArgsConstructor
  26. @Builder
  27. @Where(clause = "enabled = 1")
  28. @ApiModel(value = "用户", description = "用户")
  29. public class User extends BaseEntity implements Serializable {
  30. private Long companyId;
  31. @Pattern(regexp = Constants.Regex.USERNAME)
  32. @Size(min = 1, max = 50)
  33. @Column(nullable = false, unique = true)
  34. @Searchable
  35. private String username;
  36. @Searchable
  37. private String nickname;
  38. private String avatar;
  39. @JsonIgnore
  40. private String password;
  41. @Column(nullable = false)
  42. private Boolean enabled = true;
  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. @ExcelIgnore
  49. private Set<Authority> authorities = new HashSet<>();
  50. private String openId;
  51. private String sex;
  52. private String language;
  53. private String city;
  54. private String province;
  55. private String country;
  56. // @Pattern(regexp = Constants.Regex.CHINESE)
  57. @Searchable
  58. private String realName;
  59. @Column(length = 20)
  60. @Pattern(regexp = Constants.Regex.ID_NO)
  61. @Searchable
  62. private String idNo;
  63. @ApiModelProperty(value = "钉钉userid", name = "dingUserid")
  64. private String dingUserid;
  65. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH})
  66. @JoinTable(
  67. name = "user_department",
  68. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
  69. inverseJoinColumns = {@JoinColumn(name = "department_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
  70. @ExcelIgnore
  71. @ApiModelProperty(value = "部门", name = "departments")
  72. private Set<Department> departments = new HashSet<>();
  73. @Searchable
  74. private String phone;
  75. private String position;
  76. private String email;
  77. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH})
  78. @JoinTable(
  79. name = "user_store",
  80. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
  81. inverseJoinColumns = {@JoinColumn(name = "store_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
  82. @OrderBy("id")
  83. @ExcelIgnore
  84. @ApiModelProperty(value = "店铺", name = "stores")
  85. private Set<StoreInfo> stores = new HashSet<>();
  86. @ApiModelProperty(value = "银行卡号", name = "bankNo")
  87. private String bankNo;
  88. @ApiModelProperty(value = "用户名", name = "trueName")
  89. private String trueName;
  90. @ApiModelProperty(value = "收款方开户行", name = "bankCode")
  91. private String bankCode;
  92. @ApiModelProperty(value = "临时用户", name = "temporal")
  93. private boolean temporal;
  94. private LocalDateTime expireAt;
  95. @ApiModelProperty(value = "客户ID", name = "customerId")
  96. private Long customerId;
  97. private boolean banned;
  98. private boolean inBlackList = false;
  99. @JsonIgnore
  100. public String getPassword() {
  101. return password;
  102. }
  103. @JsonProperty
  104. public void setPassword(final String password) {
  105. this.password = password;
  106. }
  107. }