Просмотр исходного кода

fix: 按钮类型菜单太多时获取菜单列表慢的问题

许俊杰 1 год назад
Родитель
Сommit
c2485aca81
1 измененных файлов с 2 добавлено и 18 удалено
  1. 2 18
      Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

+ 2 - 18
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -52,31 +52,15 @@ public class SysMenuService : IDynamicApiController, ITransient
                 .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0);
             return menuList.Adapt<List<MenuOutput>>();
         }
+
         var menuIdList = await GetMenuIdList();
         var menuTree = await _sysMenuRep.AsQueryable()
             .InnerJoin<SysAppMenu>((u, am) => am.AppId == _userManager.AppId && u.Id == am.MenuId)
-            .Where(u => u.Status == StatusEnum.Enable)
+            .Where(u => u.Type != MenuTypeEnum.Btn && u.Status == StatusEnum.Enable)
             .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray());
-        DeleteBtnFromMenuTree(menuTree);
         return menuTree.Adapt<List<MenuOutput>>();
     }
 
-    /// <summary>
-    /// 删除登录菜单树里面的按钮
-    /// </summary>
-    private static void DeleteBtnFromMenuTree(List<SysMenu> menuList)
-    {
-        if (menuList == null) return;
-        for (var i = menuList.Count - 1; i >= 0; i--)
-        {
-            var menu = menuList[i];
-            if (menu.Type == MenuTypeEnum.Btn)
-                menuList.Remove(menu);
-            else if (menu.Children.Count > 0)
-                DeleteBtnFromMenuTree(menu.Children);
-        }
-    }
-
     /// <summary>
     /// 获取菜单列表 🔖
     /// </summary>