package user import ( model2 "ArmedPolice/app/common/model" "ArmedPolice/app/controller/basic" "ArmedPolice/app/model" "ArmedPolice/app/service" ) type Menu struct{ *service.Session } type MenuHandle func(session *service.Session) *Menu type MenuInfo struct { basic.CommonIDString *model2.SysMenuBasic ParentID string `json:"parent_id"` // 与前端约定 Meta struct { Title string `json:"title"` } `json:"meta"` Path string `json:"path"` } // Menu 用户菜单信息 func (c *Menu) Menu() ([]*MenuInfo, error) { mSysMenu := model.NewSysMenu() out := make([]*model.SysMenuScene, 0) var err error if c.IsAdmin { if out, err = mSysMenu.SystemMenu(); err != nil { return nil, err } goto RETURN } if out, err = mSysMenu.UserMenu(c.UID); err != nil { return nil, err } RETURN: list := make([]*MenuInfo, 0) for _, v := range out { mSysMenu.SetID(v.ID) data := &MenuInfo{ CommonIDString: basic.CommonIDString{ID: mSysMenu.GetEncodeID()}, SysMenuBasic: v.SysMenuBasic, ParentID: (&model2.Model{ID: v.ParentID}).GetEncodeID(), Meta: struct { Title string `json:"title"` }{Title: v.Name}, } data.Name = v.Link data.Path = v.Link list = append(list, data) } return list, nil //return menu.TreeIdentity(mSysMenu.SysMenu, out, 0), nil } func NewMenu() MenuHandle { return func(session *service.Session) *Menu { return &Menu{session} } }