优化菜单管理查询

This commit is contained in:
不做码农 2023-04-12 22:07:02 +08:00
parent b9b919bac7
commit 1eecea001b

View File

@ -32,16 +32,17 @@ namespace ZR.Service
public List<SysMenu> SelectTreeMenuList(MenuQueryDto menu, long userId) public List<SysMenu> SelectTreeMenuList(MenuQueryDto menu, long userId)
{ {
List<SysMenu> menuList; List<SysMenu> menuList;
if (SysRoleService.IsAdmin(userId)) //if (SysRoleService.IsAdmin(userId))
{ //{
menuList = SelectTreeMenuList(menu); // menuList = SelectTreeMenuList(menu);
} //}
else //else
{ //{
var userRoles = SysRoleService.SelectUserRoles(userId); // var userRoles = SysRoleService.SelectUserRoles(userId);
menuList = SelectTreeMenuListByRoles(menu, userRoles); // menuList = SelectTreeMenuListByRoles(menu, userRoles);
} //}
return menuList ?? new List<SysMenu>(); menuList = BuildMenuTree(SelectMenuList(menu, userId));
return menuList;
} }
/// <summary> /// <summary>
@ -53,7 +54,7 @@ namespace ZR.Service
List<SysMenu> menuList; List<SysMenu> menuList;
if (SysRoleService.IsAdmin(userId)) if (SysRoleService.IsAdmin(userId))
{ {
menuList = SelectAllMenuList(menu); menuList = SelectMenuList(menu);
} }
else else
{ {
@ -238,12 +239,13 @@ namespace ZR.Service
/// 获取所有菜单 /// 获取所有菜单
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private List<SysMenu> SelectAllMenuList(MenuQueryDto menu) private List<SysMenu> SelectMenuList(MenuQueryDto menu)
{ {
return Queryable() return Queryable()
.WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName))
.WhereIF(!string.IsNullOrEmpty(menu.Visible), it => it.Visible == menu.Visible) .WhereIF(!string.IsNullOrEmpty(menu.Visible), it => it.Visible == menu.Visible)
.WhereIF(!string.IsNullOrEmpty(menu.Status), it => it.Status == menu.Status) .WhereIF(!string.IsNullOrEmpty(menu.Status), it => it.Status == menu.Status)
.WhereIF(!string.IsNullOrEmpty(menu.MenuTypeIds), it => menu.MenuTypeIdArr.Contains(it.MenuType))
.WhereIF(menu.ParentId != null, it => it.ParentId == menu.ParentId) .WhereIF(menu.ParentId != null, it => it.ParentId == menu.ParentId)
.OrderBy(it => new { it.ParentId, it.OrderNum }) .OrderBy(it => new { it.ParentId, it.OrderNum })
.ToList(); .ToList();
@ -411,7 +413,7 @@ namespace ZR.Service
/// <returns>下拉树结构列表</returns> /// <returns>下拉树结构列表</returns>
public List<SysMenu> BuildMenuTree(List<SysMenu> menus) public List<SysMenu> BuildMenuTree(List<SysMenu> menus)
{ {
List<SysMenu> returnList = new List<SysMenu>(); List<SysMenu> returnList = new();
List<long> tempList = menus.Select(f => f.MenuId).ToList(); List<long> tempList = menus.Select(f => f.MenuId).ToList();
foreach (var menu in menus) foreach (var menu in menus)