41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
![]() |
package user
|
||
|
|
||
|
import (
|
||
|
model2 "SciencesServer/app/common/model"
|
||
|
"SciencesServer/app/controller"
|
||
|
"SciencesServer/app/controller/menu"
|
||
|
"SciencesServer/app/model"
|
||
|
"SciencesServer/app/service"
|
||
|
)
|
||
|
|
||
|
type Menu struct{ *controller.Platform }
|
||
|
|
||
|
type MenuHandle func(session *service.Session) *Menu
|
||
|
|
||
|
// List 菜单列表
|
||
|
func (c *Menu) List() (interface{}, error) {
|
||
|
mSysMenu := model.NewSysMenu()
|
||
|
|
||
|
if c.IsAdmin {
|
||
|
return menu.MenuForSystem(mSysMenu)
|
||
|
}
|
||
|
mSysUserTenant := model.NewSysUserTenant()
|
||
|
|
||
|
if isExist, err := model2.FirstField(mSysUserTenant.SysUserTenant, []string{"id", "identity"},
|
||
|
model2.NewWhere("tenant_id", c.TenantID), model2.NewWhere("uid", c.UID)); err != nil {
|
||
|
return nil, err
|
||
|
} else if !isExist {
|
||
|
return nil, nil
|
||
|
}
|
||
|
if mSysUserTenant.Identity == model2.SysUserTenantIdentityForSystemAdmin {
|
||
|
return menu.MenuForTenant(mSysMenu, c.TenantID)
|
||
|
}
|
||
|
return menu.MenuForUser(mSysMenu, c.TenantID, c.UID)
|
||
|
}
|
||
|
|
||
|
func NewMenu() MenuHandle {
|
||
|
return func(session *service.Session) *Menu {
|
||
|
return &Menu{Platform: &controller.Platform{Session: session}}
|
||
|
}
|
||
|
}
|