Files
2021-11-24 09:08:07 +08:00

67 lines
1.4 KiB
Go

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}
}
}