package model import ( "dy-admin/internal/pcmserver/common" "gorm.io/gorm" ) type Menu struct { MenuID int `json:"menuId" gorm:"primaryKey;autoIncrement;comment:主键编码"` MenuName string `json:"menuName" gorm:"size:128;comment:路由名称" ` Title string `json:"title" gorm:"size:128;comment:展示名称"` Icon string `json:"icon" gorm:"comment:菜单图标"` Path string `json:"path" gorm:"size:128;comment:路由地址"` Component string `json:"component" gorm:"size:255;comment:组件地址"` Paths string `json:"paths" gorm:"size:128;comment:菜单路径"` MenuType string `json:"menuType" gorm:"size:1;comment:菜单类型"` ParentId int `json:"parentId" gorm:"size:11;"` NoCache bool `json:"noCache" gorm:"size:8;comment:不缓存"` Sort int `json:"sort" gorm:"size:11;comment:排序"` Visible string `json:"visible" gorm:"size:1;comment:是否影藏"` Children []Menu `json:"children,omitempty" gorm:"-"` SysApi []Api `json:"sysApi" gorm:"many2many:sys_menu_apis;foreignKey:MenuID;joinForeignKey:MenuID;References:ID;joinReferences:ApiID"` Apis []int `json:"apis" gorm:"-"` common.ControlBy common.ModelTime } type SysMenuSlice []Menu func (x SysMenuSlice) Len() int { return len(x) } func (x SysMenuSlice) Less(i, j int) bool { return x[i].Sort < x[j].Sort } func (x SysMenuSlice) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (Menu) TableName() string { return "sys_menus" } func (m *Menu) AfterFind(_ *gorm.DB) error { apis := make([]int, 0, len(m.SysApi)) for _, api := range m.SysApi { apis = append(apis, api.ID) } m.Apis = apis return nil }