Menu.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package com.izouma.awesomeAdmin.domain;
  2. import com.alibaba.excel.annotation.ExcelIgnore;
  3. import com.izouma.awesomeAdmin.dto.MenuDTO;
  4. import com.izouma.awesomeAdmin.security.Authority;
  5. import lombok.AllArgsConstructor;
  6. import lombok.Builder;
  7. import lombok.Data;
  8. import lombok.NoArgsConstructor;
  9. import org.hibernate.annotations.Where;
  10. import javax.persistence.*;
  11. import java.io.Serializable;
  12. import java.util.HashSet;
  13. import java.util.List;
  14. import java.util.Set;
  15. @Data
  16. @Entity
  17. @NoArgsConstructor
  18. @AllArgsConstructor
  19. @Builder
  20. @Where(clause = "active = 1")
  21. public class Menu extends BaseEntity implements Serializable {
  22. private String name;
  23. private String path;
  24. private String icon;
  25. private Integer sort;
  26. private Long parent;
  27. private Boolean root;
  28. private Boolean enabled;
  29. private Boolean active;
  30. private String category;
  31. @OneToMany
  32. @JoinColumn(name = "parent", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
  33. List<Menu> children;
  34. @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH})
  35. @JoinTable(
  36. name = "menu_authority",
  37. joinColumns = {@JoinColumn(name = "menu_id", referencedColumnName = "id")},
  38. inverseJoinColumns = {@JoinColumn(name = "authority", referencedColumnName = "name")})
  39. @ExcelIgnore
  40. private Set<Authority> authorities = new HashSet<>();
  41. public static Menu from(MenuDTO menuDTO) {
  42. Menu menu = Menu.builder()
  43. .name(menuDTO.getName())
  44. .path(menuDTO.getPath())
  45. .icon(menuDTO.getIcon())
  46. .sort(menuDTO.getSort())
  47. .parent(menuDTO.getParent())
  48. .root(menuDTO.getRoot())
  49. .enabled(menuDTO.getEnabled())
  50. .active(menuDTO.getActive())
  51. .category(menuDTO.getCategory())
  52. .children(null)
  53. .build();
  54. menu.setId(menuDTO.getId());
  55. return menu;
  56. }
  57. }