Files

117 lines
2.7 KiB
Go
Raw Normal View History

2021-09-28 11:47:19 +08:00
package menu
import (
2022-01-05 11:29:27 +08:00
"SciencesServer/app/api/admin/model"
2021-09-28 11:47:19 +08:00
model2 "SciencesServer/app/common/model"
2022-01-06 10:43:27 +08:00
"SciencesServer/app/session"
2021-09-28 11:47:19 +08:00
"errors"
"time"
)
// Instance 菜单管理
2022-01-06 10:43:27 +08:00
type Instance struct{ *session.Admin }
2021-09-28 11:47:19 +08:00
2022-01-06 10:43:27 +08:00
type InstanceHandle func(session *session.Admin) *Instance
2021-09-28 11:47:19 +08:00
type (
// InstanceParams 菜单参数
InstanceParams struct {
2022-01-07 16:12:43 +08:00
ID, ParentID uint64
Kind int
Name, Link, Auth, Component, Icon string
Sort, IsCache, IsHidden, Status int
Remark string
2021-09-28 11:47:19 +08:00
}
)
2022-01-06 17:11:57 +08:00
// Index 列表信息
func (c *Instance) Index() ([]*Tree, error) {
// 总管理:
// 租户管理:
2021-09-28 11:47:19 +08:00
mSysMenu := model.NewSysMenu()
2022-01-06 17:11:57 +08:00
if c.IsAdmin && c.TenantID <= 0 {
return menuForSystem(mSysMenu)
2021-09-28 11:47:19 +08:00
}
2022-01-06 17:11:57 +08:00
return menuForTenant(mSysMenu, c.TenantID)
2021-09-28 11:47:19 +08:00
}
// 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,
2022-01-06 17:11:57 +08:00
IsCache: model2.SysMenuCacheStatus(params.IsCache),
IsHidden: model2.SysMenuHiddenStatus(params.IsHidden),
2021-09-28 11:47:19 +08:00
Icon: params.Icon,
},
2022-01-07 16:12:43 +08:00
Auth: params.Auth,
2021-09-28 11:47:19 +08:00
Sort: params.Sort,
2022-01-06 17:11:57 +08:00
Status: model2.SysMenuStatus(params.Status),
2021-09-28 11:47:19 +08:00
Remark: params.Remark,
})
}
out := model.NewSysMenu()
out.ID = params.ID
isExist, err := model2.FirstWhere(out.SysMenu)
if err != nil {
return err
} else if !isExist {
2022-01-06 17:11:57 +08:00
return errors.New("操作错误,菜单信息不存在")
2021-09-28 11:47:19 +08:00
}
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
2022-01-07 16:12:43 +08:00
out.Auth = params.Auth
2022-01-06 17:11:57 +08:00
out.IsCache = model2.SysMenuCacheStatus(params.IsCache)
out.IsHidden = model2.SysMenuHiddenStatus(params.IsHidden)
2021-09-28 11:47:19 +08:00
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 {
2022-01-06 10:43:27 +08:00
return func(session *session.Admin) *Instance {
return &Instance{Admin: session}
2021-09-28 11:47:19 +08:00
}
}