新增获取菜单列表
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"hospital-admin-api/api/dao"
|
||||
"hospital-admin-api/api/model"
|
||||
"hospital-admin-api/api/responses/roleResponse"
|
||||
)
|
||||
|
||||
type Role struct{}
|
||||
|
||||
// GetRoleMenuList 获取角色菜单
|
||||
func (r *Role) GetRoleMenuList(roleId int64) ([]*roleResponse.RoleMenuList, error) {
|
||||
AdminRoleMenuDao := dao.AdminRoleMenu{}
|
||||
adminRoleMenu, _ := AdminRoleMenuDao.GetAdminRoleMenuListByRoleId(roleId)
|
||||
if adminRoleMenu == nil {
|
||||
return []*roleResponse.RoleMenuList{}, nil
|
||||
}
|
||||
|
||||
// 获取全部菜单
|
||||
AdminMenuDao := dao.AdminMenu{}
|
||||
adminMenu, _ := AdminMenuDao.GetAdminMenuListSortOrderNum()
|
||||
if adminMenu == nil {
|
||||
return []*roleResponse.RoleMenuList{}, nil
|
||||
}
|
||||
|
||||
var menuIDs []int64
|
||||
var menuTree []*roleResponse.RoleMenuList
|
||||
|
||||
if len(adminRoleMenu) > 0 {
|
||||
for _, roleMenu := range adminRoleMenu {
|
||||
menuIDs = append(menuIDs, roleMenu.MenuID)
|
||||
}
|
||||
|
||||
// 构建菜单树
|
||||
menuTree = buildMenuTree(menuIDs, adminMenu)
|
||||
}
|
||||
|
||||
return menuTree, nil
|
||||
}
|
||||
|
||||
// 构建菜单树
|
||||
func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse.RoleMenuList {
|
||||
menuMap := make(map[int64]*roleResponse.RoleMenuList)
|
||||
rootNodes := make([]*roleResponse.RoleMenuList, 0)
|
||||
|
||||
// 构建菜单映射
|
||||
for _, menu := range menuData {
|
||||
for _, v := range menuIds {
|
||||
if v == menu.MenuId {
|
||||
node := &roleResponse.RoleMenuList{
|
||||
MenuId: menu.MenuId,
|
||||
MenuName: menu.MenuName,
|
||||
ParentId: menu.ParentId,
|
||||
MenuStatus: menu.MenuStatus,
|
||||
MenuType: menu.MenuType,
|
||||
Permission: menu.Permission,
|
||||
OrderNum: menu.OrderNum,
|
||||
Icon: menu.Icon,
|
||||
Path: menu.Path,
|
||||
Children: nil,
|
||||
}
|
||||
|
||||
menuMap[menu.MenuId] = node
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 构建菜单树
|
||||
for _, menu := range menuData {
|
||||
if menu.ParentId == 0 {
|
||||
rootNodes = append(rootNodes, menuMap[menu.MenuId])
|
||||
} else if parent, ok := menuMap[menu.ParentId]; ok {
|
||||
parent.Children = append(parent.Children, menuMap[menu.MenuId])
|
||||
}
|
||||
}
|
||||
|
||||
return rootNodes
|
||||
}
|
||||
Reference in New Issue
Block a user