SuperUser.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.izouma.nineth.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.fasterxml.jackson.annotation.JsonIgnore;
  4. import com.izouma.nineth.annotations.Searchable;
  5. import com.izouma.nineth.config.Constants;
  6. import com.izouma.nineth.security.Authority;
  7. import io.swagger.annotations.ApiModel;
  8. import lombok.AllArgsConstructor;
  9. import lombok.Data;
  10. import lombok.NoArgsConstructor;
  11. import org.hibernate.annotations.BatchSize;
  12. import org.hibernate.annotations.Where;
  13. import javax.persistence.*;
  14. import javax.validation.constraints.Pattern;
  15. import javax.validation.constraints.Size;
  16. import java.util.HashSet;
  17. import java.util.Set;
  18. @Data
  19. @Entity
  20. @AllArgsConstructor
  21. @NoArgsConstructor
  22. @Where(clause = "enabled = 1")
  23. @ApiModel(value = "超级用户", description = "超级用户")
  24. public class SuperUser extends BaseEntity {
  25. @Pattern(regexp = Constants.Regex.USERNAME)
  26. @Size(min = 1, max = 50)
  27. @Column(nullable = false, unique = true)
  28. @Searchable
  29. private String username;
  30. @Searchable
  31. private String nickname;
  32. private String avatar;
  33. @JsonIgnore
  34. private String password;
  35. @Searchable
  36. private String phone;
  37. @Column(nullable = false)
  38. private Boolean enabled = true;
  39. @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
  40. @JoinTable(
  41. name = "super_user_authority",
  42. joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
  43. inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
  44. @BatchSize(size = 20)
  45. @ExcelIgnore
  46. private Set<Authority> authorities = new HashSet<>();
  47. }