| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package com.izouma.nineth.domain;
- import com.alibaba.excel.annotation.ExcelIgnore;
- import com.fasterxml.jackson.annotation.JsonIgnore;
- import com.fasterxml.jackson.annotation.JsonView;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import com.izouma.nineth.annotations.Searchable;
- import com.izouma.nineth.enums.AuthStatus;
- import com.izouma.nineth.enums.InviteType;
- import com.izouma.nineth.enums.SearchMode;
- import com.izouma.nineth.security.Authority;
- import com.izouma.nineth.utils.UserAuthoritySerializer;
- import io.swagger.annotations.ApiModel;
- import io.swagger.annotations.ApiModelProperty;
- import lombok.AllArgsConstructor;
- import lombok.Builder;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import org.hibernate.annotations.BatchSize;
- import org.hibernate.annotations.DynamicUpdate;
- import javax.persistence.*;
- import javax.validation.constraints.Size;
- import java.io.Serializable;
- import java.math.BigDecimal;
- import java.util.HashSet;
- import java.util.Set;
- @Data
- @Entity
- @Table(indexes = {
- @Index(columnList = "phone", unique = true, name = "user_index_phone"),
- @Index(columnList = "collectionId"),
- @Index(columnList = "collectionInvitor"),
- @Index(columnList = "admin"),
- @Index(columnList = "minter"),
- @Index(columnList = "company"),
- @Index(columnList = "createdAt"),
- @Index(columnList = "settleAccountId"),
- @Index(columnList = "nickname"),
- @Index(columnList = "del"),
- })
- @AllArgsConstructor
- @NoArgsConstructor
- @Builder
- @ApiModel(value = "用户", description = "用户")
- @DynamicUpdate
- public class User extends UserBaseEntity implements Serializable {
- public interface View {
- interface Basic {
- }
- interface Detail {
- }
- }
- // @Pattern(regexp = Constants.Regex.USERNAME)
- @Size(min = 1, max = 50)
- @Column(nullable = false, unique = true)
- @Searchable(mode = SearchMode.EXACT)
- private String username;
- @Searchable(mode = SearchMode.EXACT)
- private String nickname;
- private String avatar;
- @JsonView(View.Detail.class)
- private String password;
- private boolean del = false;
- @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
- @JoinTable(
- name = "user_authority",
- joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))},
- inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name", foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))})
- @BatchSize(size = 20)
- @ExcelIgnore
- @JsonSerialize(using = UserAuthoritySerializer.class, as = HashSet.class)
- @JsonView(View.Detail.class)
- private Set<Authority> authorities = new HashSet<>();
- private String openId;
- private String sex;
- private String language;
- private String city;
- private String province;
- private String country;
- @Searchable(mode = SearchMode.EXACT)
- private String phone;
- private String email;
- @ApiModelProperty("关注数量")
- private int follows;
- @ApiModelProperty("粉丝数量")
- private int followers;
- private int sales;
- @Column(columnDefinition = "TEXT")
- private String intro;
- private String bg;
- private Long authId;
- @ApiModelProperty("实名审核状态")
- @Enumerated(EnumType.STRING)
- private AuthStatus authStatus;
- private String nftAccount;
- @JsonIgnore
- private String kmsId;
- @JsonIgnore
- private String publicKey;
- @JsonIgnore
- private String tradeCode;
- @Column(columnDefinition = "tinyint unsigned")
- private boolean admin;
- @ApiModelProperty("分成比例")
- @Column(precision = 10, scale = 2)
- private BigDecimal shareRatio;
- private String memberId;
- private String settleAccountId;
- private String invitorName;
- private String invitorPhone;
- private String inviteCode;
- @ApiModelProperty("分享藏品邀请者")
- private Long collectionInvitor;
- @ApiModelProperty("藏品Id")
- private Long collectionId;
- @ApiModelProperty("勋章等级")
- private int level;
- @ApiModelProperty("优先购买")
- private int vipPurchase;
- @Column(columnDefinition = "tinyint unsigned")
- private boolean minter;
- /**
- * 0 无光 1 绿光 2 金光
- */
- @ApiModelProperty("使用藏品图片")
- @Column(columnDefinition = "tinyint unsigned default 0")
- private boolean useCollectionPic;
- @Column(columnDefinition = "int(11) default 0")
- @ApiModelProperty("白名单积分")
- private int vipPoint = 0;
- @ApiModelProperty(value = "风险提示")
- private Boolean riskWarning;
- @Column(columnDefinition = "tinyint unsigned default 0")
- private boolean canSale = false;
- @Column(columnDefinition = "tinyint unsigned default 0")
- private boolean company = false;
- @Column(columnDefinition = "tinyint unsigned default 0")
- private boolean walletEnabled = false;
- private String hcChainAddress;
- @Column(columnDefinition = "int(11) default 0")
- @ApiModelProperty("销毁积分")
- private int destroyPoint = 0;
- @Column(columnDefinition = "tinyint unsigned default 1")
- @ApiModelProperty("主页是否展示")
- private Boolean isPublicShow = Boolean.TRUE;
- private Long companyId;
- @ApiModelProperty("是否关注")
- @Transient
- private boolean follow;
- @Enumerated(EnumType.STRING)
- private InviteType inviteType;
- @Transient
- private String metaCompany;
- }
|