117 lines
2.7 KiB
Go
117 lines
2.7 KiB
Go
package menu
|
|
|
|
import (
|
|
"SciencesServer/app/api/admin/model"
|
|
model2 "SciencesServer/app/common/model"
|
|
"SciencesServer/app/session"
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
// Instance 菜单管理
|
|
type Instance struct{ *session.Admin }
|
|
|
|
type InstanceHandle func(session *session.Admin) *Instance
|
|
|
|
type (
|
|
// InstanceParams 菜单参数
|
|
InstanceParams struct {
|
|
ID, ParentID uint64
|
|
Kind, Auth int
|
|
Name, Link, Component, Icon string
|
|
Sort, IsCache, IsHidden, Status int
|
|
Remark string
|
|
}
|
|
)
|
|
|
|
// Index 列表信息
|
|
func (c *Instance) Index() ([]*Tree, error) {
|
|
// 总管理:
|
|
// 租户管理:
|
|
mSysMenu := model.NewSysMenu()
|
|
|
|
if c.IsAdmin && c.TenantID <= 0 {
|
|
return menuForSystem(mSysMenu)
|
|
}
|
|
return menuForTenant(mSysMenu, c.TenantID)
|
|
}
|
|
|
|
// Form 数据操作
|
|
func (c *Instance) Form(params *InstanceParams) error {
|
|
if params.ID <= 0 {
|
|
return model2.Create(&model2.SysMenu{
|
|
SysMenuBasic: model2.SysMenuBasic{
|
|
ParentID: params.ParentID,
|
|
Name: params.Name,
|
|
Kind: model2.SysMenuKind(params.Kind),
|
|
Link: params.Link,
|
|
Component: params.Component,
|
|
IsCache: model2.SysMenuCacheStatus(params.IsCache),
|
|
IsHidden: model2.SysMenuHiddenStatus(params.IsHidden),
|
|
Icon: params.Icon,
|
|
},
|
|
Auth: model2.SysMenuAuth(params.Auth),
|
|
Sort: params.Sort,
|
|
Status: model2.SysMenuStatus(params.Status),
|
|
Remark: params.Remark,
|
|
})
|
|
}
|
|
out := model.NewSysMenu()
|
|
out.ID = params.ID
|
|
|
|
isExist, err := model2.FirstWhere(out.SysMenu)
|
|
|
|
if err != nil {
|
|
return err
|
|
} else if !isExist {
|
|
return errors.New("操作错误,菜单信息不存在")
|
|
}
|
|
out.ParentID = params.ParentID
|
|
out.Name = params.Name
|
|
out.Kind = model2.SysMenuKind(params.Kind)
|
|
out.Link = params.Link
|
|
out.Component = params.Component
|
|
out.Icon = params.Icon
|
|
out.Auth = model2.SysMenuAuth(params.Auth)
|
|
out.IsCache = model2.SysMenuCacheStatus(params.IsCache)
|
|
out.IsHidden = model2.SysMenuHiddenStatus(params.IsHidden)
|
|
out.Sort = params.Sort
|
|
out.Status = model2.SysMenuStatus(params.Status)
|
|
out.Remark = params.Remark
|
|
|
|
if err = model2.Save(out); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Status 状态操作
|
|
func (c *Instance) Status(id uint64, status int) error {
|
|
mSysMenu := model.NewSysMenu()
|
|
mSysMenu.ID = id
|
|
|
|
if err := model2.Updates(mSysMenu.SysMenu, map[string]interface{}{
|
|
"status": status, "updated_at": time.Now(),
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Delete 删除操作
|
|
func (c *Instance) Delete(id uint64) error {
|
|
mSysMenu := model.NewSysMenu()
|
|
mSysMenu.ID = id
|
|
|
|
if err := model2.Delete(mSysMenu.SysMenu); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func NewInstance() InstanceHandle {
|
|
return func(session *session.Admin) *Instance {
|
|
return &Instance{Admin: session}
|
|
}
|
|
}
|