菜单管理加载优化

This commit is contained in:
不做码农
2022-05-24 21:42:45 +08:00
parent c7f6d5ebc5
commit ae3cd6899e
7 changed files with 105 additions and 75 deletions

View File

@@ -14,6 +14,7 @@ namespace ZR.Service.System.IService
List<SysMenu> SelectTreeMenuList(MenuQueryDto menu, long userId);
SysMenu GetMenuByMenuId(int menuId);
List<SysMenu> GetMenusByMenuId(int menuId);
int AddMenu(SysMenu menu);
int EditMenu(SysMenu menu);

View File

@@ -42,7 +42,7 @@ namespace ZR.Service
else
{
var userRoles = SysRoleService.SelectUserRoles(userId);
menuList = MenuRepository.SelectTreeMenuListByUserId(menu, userRoles);
menuList = MenuRepository.SelectTreeMenuListByRoles(menu, userRoles);
}
return menuList;
}
@@ -76,6 +76,21 @@ namespace ZR.Service
return MenuRepository.SelectMenuById(menuId);
}
/// <summary>
/// 根据菜单id获取菜单列表
/// </summary>
/// <param name="menuId"></param>
/// <returns></returns>
public List<SysMenu> GetMenusByMenuId(int menuId)
{
var list = MenuRepository.GetList(f => f.parentId == menuId).OrderBy(f => f.orderNum).ToList();
Context.ThenMapper(list, item =>
{
item.SubNum = Context.Queryable<SysMenu>().SetContext(x => x.parentId, () => item.MenuId, item).Count();
});
return list;
}
/// <summary>
/// 添加菜单
/// </summary>
@@ -155,17 +170,19 @@ namespace ZR.Service
/// <returns></returns>
public List<SysMenu> SelectMenuTreeByUserId(long userId)
{
List<SysMenu> menus;
MenuQueryDto dto = new() { Status = "0", MenuTypeIds = "M,C" };
//List<SysMenu> menus;
if (SysRoleService.IsAdmin(userId))
{
menus = MenuRepository.SelectMenuTreeAll();
return MenuRepository.SelectTreeMenuList(dto);
}
else
{
List<long> roleIds = SysRoleService.SelectUserRoles(userId);
menus = MenuRepository.SelectMenuTreeByRoleIds(roleIds);
//menus = MenuRepository.SelectMenuTreeByRoleIds(roleIds);
return MenuRepository.SelectTreeMenuListByRoles(dto, roleIds);
}
return GetChildPerms(menus, 0);
//return GetChildPerms(menus, 0);
}
/// <summary>
@@ -206,25 +223,25 @@ namespace ZR.Service
#region
/// <summary>
/// 根据父节点的ID获取所有子节点
/// </summary>
/// <param name="list">分类表</param>
/// <param name="parentId">传入的父节点ID</param>
/// <returns></returns>
public List<SysMenu> GetChildPerms(List<SysMenu> list, int parentId)
{
List<SysMenu> returnList = new List<SysMenu>();
var data = list.FindAll(f => f.parentId == parentId);
///// <summary>
///// 根据父节点的ID获取所有子节点
///// </summary>
///// <param name="list">分类表</param>
///// <param name="parentId">传入的父节点ID</param>
///// <returns></returns>
//public List<SysMenu> GetChildPerms(List<SysMenu> list, int parentId)
//{
// List<SysMenu> returnList = new List<SysMenu>();
// var data = list.FindAll(f => f.parentId == parentId);
foreach (var item in data)
{
RecursionFn(list, item);
// foreach (var item in data)
// {
// RecursionFn(list, item);
returnList.Add(item);
}
return returnList;
}
// returnList.Add(item);
// }
// return returnList;
//}
/// <summary>
/// 递归列表