menu.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package model
  2. import (
  3. "dy-admin/internal/pcmserver/common"
  4. "gorm.io/gorm"
  5. )
  6. type Menu struct {
  7. MenuID int `json:"menuId" gorm:"primaryKey;autoIncrement;comment:主键编码"`
  8. MenuName string `json:"menuName" gorm:"size:128;comment:路由名称" `
  9. Title string `json:"title" gorm:"size:128;comment:展示名称"`
  10. Icon string `json:"icon" gorm:"comment:菜单图标"`
  11. Path string `json:"path" gorm:"size:128;comment:路由地址"`
  12. Component string `json:"component" gorm:"size:255;comment:组件地址"`
  13. Paths string `json:"paths" gorm:"size:128;comment:菜单路径"`
  14. MenuType string `json:"menuType" gorm:"size:1;comment:菜单类型"`
  15. ParentId int `json:"parentId" gorm:"size:11;"`
  16. NoCache bool `json:"noCache" gorm:"size:8;comment:不缓存"`
  17. Sort int `json:"sort" gorm:"size:11;comment:排序"`
  18. Visible string `json:"visible" gorm:"size:1;comment:是否影藏"`
  19. Children []Menu `json:"children,omitempty" gorm:"-"`
  20. SysApi []Api `json:"sysApi" gorm:"many2many:sys_menu_apis;foreignKey:MenuID;joinForeignKey:MenuID;References:ID;joinReferences:ApiID"`
  21. Apis []int `json:"apis" gorm:"-"`
  22. common.ControlBy
  23. common.ModelTime
  24. }
  25. type SysMenuSlice []Menu
  26. func (x SysMenuSlice) Len() int { return len(x) }
  27. func (x SysMenuSlice) Less(i, j int) bool { return x[i].Sort < x[j].Sort }
  28. func (x SysMenuSlice) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
  29. func (Menu) TableName() string {
  30. return "sys_menus"
  31. }
  32. func (m *Menu) AfterFind(_ *gorm.DB) error {
  33. apis := make([]int, 0, len(m.SysApi))
  34. for _, api := range m.SysApi {
  35. apis = append(apis, api.ID)
  36. }
  37. m.Apis = apis
  38. return nil
  39. }