feat:完善项目
This commit is contained in:
@ -1,23 +1,149 @@
|
||||
package menu
|
||||
|
||||
import (
|
||||
"ArmedPolice/app/controller/basic"
|
||||
model2 "ArmedPolice/app/common/model"
|
||||
"ArmedPolice/app/model"
|
||||
"ArmedPolice/app/service"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Instance struct{ *service.Session }
|
||||
|
||||
type InstanceHandle func(session *service.Session) *Instance
|
||||
|
||||
func (c *Instance) List() (*basic.ReturnPages, error) {
|
||||
return &basic.ReturnPages{Data: nil, Count: 0}, nil
|
||||
type (
|
||||
// InstanceInfo 菜单信息
|
||||
InstanceInfo struct {
|
||||
*model2.SysMenu
|
||||
Children []*InstanceInfo `json:"children"`
|
||||
}
|
||||
// InstanceIdentityInfo 多个身份菜单信息
|
||||
InstanceIdentityInfo struct {
|
||||
ID string `json:"id"`
|
||||
*model2.SysMenuBasic
|
||||
Checked bool `json:"checked"`
|
||||
Children []*InstanceIdentityInfo `json:"children"`
|
||||
}
|
||||
// InstanceParams 菜单参数
|
||||
InstanceParams struct {
|
||||
ID, ParentID uint64
|
||||
Kind, Auth int
|
||||
Name, Link, Component, Icon string
|
||||
Sort, Status int
|
||||
Remark string
|
||||
}
|
||||
)
|
||||
|
||||
// tree 树状筛选
|
||||
func (c *Instance) tree(src []*model2.SysMenu, parentID uint64) []*InstanceInfo {
|
||||
out := make([]*InstanceInfo, 0)
|
||||
|
||||
for _, v := range src {
|
||||
if v.ParentID == parentID {
|
||||
out = append(out, &InstanceInfo{
|
||||
SysMenu: v,
|
||||
Children: c.tree(src, v.ID),
|
||||
})
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (c *Instance) Form() error {
|
||||
// TreeIdentity 树状筛选
|
||||
func TreeIdentity(src []*model.SysMenuScene, parentID uint64) []*InstanceIdentityInfo {
|
||||
out := make([]*InstanceIdentityInfo, 0)
|
||||
|
||||
for _, v := range src {
|
||||
if v.ParentID == parentID {
|
||||
out = append(out, &InstanceIdentityInfo{
|
||||
SysMenuBasic: v.SysMenuBasic,
|
||||
Checked: v.SceneID > 0,
|
||||
Children: TreeIdentity(src, v.ID),
|
||||
})
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// List 列表信息
|
||||
func (c *Instance) List() ([]*InstanceInfo, error) {
|
||||
mSysMenu := model.NewSysMenu()
|
||||
|
||||
out, err := mSysMenu.Menus()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.tree(out, 0), nil
|
||||
}
|
||||
|
||||
// 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,
|
||||
Icon: params.Icon,
|
||||
},
|
||||
Auth: model2.SysMenuAuth(params.Auth),
|
||||
Sort: params.Sort,
|
||||
Status: model2.SysMenuStatusForNormal,
|
||||
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.Sort = params.Sort
|
||||
out.Status = model2.SysMenuStatus(params.Status)
|
||||
out.Remark = params.Remark
|
||||
|
||||
if err = model2.Save(out); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Instance) Delete() error {
|
||||
// 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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user