feat:完善项目信息

This commit is contained in:
henry
2022-01-06 17:11:57 +08:00
parent 1b0f71735b
commit a92801b1ce
29 changed files with 815 additions and 623 deletions

View File

@ -7,11 +7,19 @@ import (
type (
Tree struct {
ID string `json:"id"`
ParentID string `json:"parent_id"`
*model2.SysMenu
Path string `json:"path"`
Hidden int `json:"hidden"`
Children []*Tree `json:"children"`
}
TreeChecked struct {
ID string `json:"id"`
ParentID string `json:"parent_id"`
*model2.SysMenuBasic
Path string `json:"path"`
Hidden int `json:"hidden"`
Checked bool `json:"checked"`
Children []*TreeChecked `json:"children"`
}
@ -24,7 +32,11 @@ func tree(src []*model2.SysMenu, parentID uint64) []*Tree {
for _, v := range src {
if v.ParentID == parentID {
out = append(out, &Tree{
ID: v.GetEncodeID(),
ParentID: (&model2.Model{ID: v.ParentID}).GetEncodeID(),
SysMenu: v,
Path: v.Link,
Hidden: int(v.IsHidden),
Children: tree(src, v.ID),
})
}
@ -39,7 +51,11 @@ func TreeCheckedFunc(src []*model.SysMenuScene, parentID uint64) []*TreeChecked
for _, v := range src {
if v.ParentID == parentID {
out = append(out, &TreeChecked{
ID: v.GetEncodeID(),
ParentID: (&model2.Model{ID: v.ParentID}).GetEncodeID(),
SysMenuBasic: v.SysMenuBasic,
Path: v.Link,
Hidden: int(v.IsHidden),
Checked: v.SceneID > 0,
Children: TreeCheckedFunc(src, v.ID),
})
@ -58,9 +74,9 @@ func menuForSystem(iModel model2.IModel, where ...*model2.ModelWhere) ([]*Tree,
return tree(out, 0), nil
}
// MenuForSystem 系统管理员菜单
func MenuForSystem(iModel model2.IModel, where ...*model2.ModelWhere) ([]*Tree, error) {
out, err := iModel.(*model.SysMenu).SystemMenu(where...)
// menuForTenant 租户人员菜单
func menuForTenant(iModel model2.IModel, tenantID uint64, where ...*model2.ModelWhere) ([]*Tree, error) {
out, err := iModel.(*model.SysMenu).TenantMenu(tenantID, where...)
if err != nil {
return nil, err
@ -68,28 +84,39 @@ func MenuForSystem(iModel model2.IModel, where ...*model2.ModelWhere) ([]*Tree,
return tree(out, 0), nil
}
// MenuForTenant 租户人员菜单
func MenuForTenant(iModel model2.IModel, tenantID uint64) ([]*TreeChecked, error) {
out, err := iModel.(*model.SysMenu).TenantMenu(tenantID)
if err != nil {
return nil, err
}
return TreeCheckedFunc(out, 0), nil
// MenuForSystem 系统管理员菜单
func MenuForSystem(iModel model2.IModel, where ...*model2.ModelWhere) ([]*Tree, error) {
return menuForSystem(iModel, where...)
}
func MenuForRole(iModel model2.IModel, tenantID uint64, roleID uint64) ([]*TreeChecked, error) {
out, err := iModel.(*model.SysMenu).RoleMenu(tenantID, roleID)
if err != nil {
return nil, err
}
return TreeCheckedFunc(out, 0), nil
// MenuForTenant 租户人员菜单
func MenuForTenant(iModel model2.IModel, tenantID uint64, where ...*model2.ModelWhere) ([]*Tree, error) {
return menuForTenant(iModel, tenantID, where...)
}
// MenuForUser 当前用户菜单
func MenuForUser(iModel model2.IModel, tenantID uint64, uid uint64) ([]*TreeChecked, error) {
out, err := iModel.(*model.SysMenu).UserMenu(tenantID, uid)
func MenuForUser(iModel model2.IModel, tenantID uint64, uid uint64, where ...*model2.ModelWhere) ([]*Tree, error) {
out, err := iModel.(*model.SysMenu).UserMenu(tenantID, uid, where...)
if err != nil {
return nil, err
}
return tree(out, 0), nil
}
// MenuForTenantChecked 租户选中菜单
func MenuForTenantChecked(iModel model2.IModel, tenantID uint64) ([]*TreeChecked, error) {
out, err := iModel.(*model.SysMenu).TenantMenuChecked(tenantID)
if err != nil {
return nil, err
}
return TreeCheckedFunc(out, 0), nil
}
// MenuForRoleChecked 角色选中菜单
func MenuForRoleChecked(iModel model2.IModel, tenantID uint64, roleID uint64) ([]*TreeChecked, error) {
out, err := iModel.(*model.SysMenu).RoleMenuChecked(tenantID, roleID)
if err != nil {
return nil, err
}

View File

@ -16,24 +16,24 @@ type InstanceHandle func(session *session.Admin) *Instance
type (
// InstanceParams 菜单参数
InstanceParams struct {
ID, ParentID uint64
Kind, Auth int
Name, Link, Component, Icon string
Sort, Status int
Remark string
ID, ParentID uint64
Kind, Auth int
Name, Link, Component, Icon string
Sort, IsCache, IsHidden, Status int
Remark string
}
)
// List 列表信息
func (c *Instance) List() ([]*Tree, error) {
// Index 列表信息
func (c *Instance) Index() ([]*Tree, error) {
// 总管理:
// 租户管理:
mSysMenu := model.NewSysMenu()
auth := []model2.SysMenuAuth{model2.SysMenuAuthForOrdinary}
if c.IsAdmin {
auth = append(auth, model2.SysMenuAuthForSystem)
if c.IsAdmin && c.TenantID <= 0 {
return menuForSystem(mSysMenu)
}
return menuForSystem(mSysMenu, model2.NewWhereIn("auth", auth))
return menuForTenant(mSysMenu, c.TenantID)
}
// Form 数据操作
@ -46,11 +46,13 @@ func (c *Instance) Form(params *InstanceParams) error {
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.SysMenuStatusForNormal,
Status: model2.SysMenuStatus(params.Status),
Remark: params.Remark,
})
}
@ -62,7 +64,7 @@ func (c *Instance) Form(params *InstanceParams) error {
if err != nil {
return err
} else if !isExist {
return errors.New("菜单信息不存在")
return errors.New("操作错误,菜单信息不存在")
}
out.ParentID = params.ParentID
out.Name = params.Name
@ -71,6 +73,8 @@ func (c *Instance) Form(params *InstanceParams) error {
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