User.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.izouma.dingdong.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  5. import com.izouma.dingdong.annotations.Searchable;
  6. import com.izouma.dingdong.config.Constants;
  7. import com.izouma.dingdong.enums.Identity;
  8. import com.izouma.dingdong.security.Authority;
  9. import io.swagger.annotations.ApiModel;
  10. import io.swagger.annotations.ApiModelProperty;
  11. import lombok.*;
  12. import org.hibernate.annotations.BatchSize;
  13. import org.hibernate.annotations.Where;
  14. import javax.persistence.*;
  15. import javax.validation.constraints.Pattern;
  16. import javax.validation.constraints.Size;
  17. import java.io.Serializable;
  18. import java.math.BigDecimal;
  19. import java.util.HashSet;
  20. import java.util.Set;
  21. @EqualsAndHashCode(callSuper = false)
  22. @Data
  23. @Entity
  24. @AllArgsConstructor
  25. @NoArgsConstructor
  26. @Builder
  27. @Where(clause = "enabled = 1")
  28. @ApiModel(value = "用户", description = "用户")
  29. @JsonIgnoreProperties(value = {"hibernateLazyInitializer"})
  30. public class User extends BaseEntity implements Serializable {
  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. @Builder.Default
  42. @Column(nullable = false)
  43. private Boolean enabled = true;
  44. @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
  45. @JoinTable(
  46. name = "user_authority",
  47. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
  48. inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
  49. @BatchSize(size = 20)
  50. @ExcelIgnore
  51. private Set<Authority> authorities = new HashSet<>();
  52. private String openId;
  53. private String sex;
  54. private String language;
  55. private String city;
  56. private String province;
  57. private String country;
  58. @Searchable
  59. private String phone;
  60. private String email;
  61. @Enumerated(EnumType.STRING)
  62. @ApiModelProperty(value = "身份", name = "identity")
  63. private Identity identity;
  64. /* @ApiModelProperty(value = "合作申请", name = "apply")
  65. private String apply;*/
  66. @Builder.Default
  67. @Column(nullable = false)
  68. @ApiModelProperty(value = "黑名单", name = "blacklist")
  69. private Boolean blacklist = false;
  70. // @ApiModelProperty(value = "消费金额",name = "consumption")
  71. // private BigDecimal consumption;
  72. //用于商家/骑手体现
  73. @Column(precision = 10, scale = 2)
  74. @ApiModelProperty(value = "余额", name = "money")
  75. private BigDecimal money;
  76. //为-1时为永久不可下单
  77. @ApiModelProperty(value = "多少时间不可点单", name = "notOrder")
  78. private Integer notOrder;
  79. // @ApiModelProperty(value = "可不可以货到付款", name = "canCash")
  80. // private Boolean canCash;
  81. /* //默认用户名
  82. public String getDefaultUsername(String phone) {
  83. return phone.replace(phone.substring(3, 7), "****");
  84. }*/
  85. }