51 lines
1.2 KiB
Go

package service
import (
"hospital-admin-api/api/dao"
"hospital-admin-api/api/responses/menuResponse"
)
type MenuService struct{}
// GetMenuList 获取菜单列表
func (r *MenuService) GetMenuList() ([]*menuResponse.GetMenuList, error) {
// 获取全部菜单
AdminMenuDao := dao.AdminMenuDao{}
adminMenu, _ := AdminMenuDao.GetAdminMenuListSortOrderNum()
if adminMenu == nil {
return []*menuResponse.GetMenuList{}, nil
}
menuMap := make(map[int64]*menuResponse.GetMenuList)
var menuTree []*menuResponse.GetMenuList
for _, menu := range adminMenu {
node := &menuResponse.GetMenuList{
MenuId: menu.MenuId,
MenuName: menu.MenuName,
MenuTitle: menu.MenuTitle,
ParentId: menu.ParentId,
MenuStatus: menu.MenuStatus,
MenuType: menu.MenuType,
Permission: menu.Permission,
OrderNum: menu.OrderNum,
Icon: menu.Icon,
Path: menu.Path,
Component: menu.Component,
Children: nil,
}
menuMap[menu.MenuId] = node
}
// 构建菜单树
for _, menu := range adminMenu {
if menu.ParentId == 0 {
menuTree = append(menuTree, menuMap[menu.MenuId])
} else if parent, ok := menuMap[menu.ParentId]; ok {
parent.Children = append(parent.Children, menuMap[menu.MenuId])
}
}
return menuTree, nil
}