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

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

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

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

@@ -52,15 +52,31 @@ 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.Type != MenuTypeEnum.Btn && u.Status == StatusEnum.Enable)
+            .Where(u => 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>