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

fixup! fix: 修复未分配的菜单不可见问题

喵你个旺呀 1 год назад
Родитель
Сommit
81b30828c4
1 измененных файлов с 15 добавлено и 14 удалено
  1. 15 14
      Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

+ 15 - 14
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -268,20 +268,21 @@ public class SysMenuService : IDynamicApiController, ITransient
         ISugarQueryable<SysMenu, SysTenantMenu> query;
         if (_userManager.SuperAdmin)
         {
-            // 未被分配的菜单
-            var unMenuIds = _sysMenuRep.AsQueryable()
-                .Where(u => !SqlFunc.Subqueryable<SysTenantMenu>().Where(t => t.MenuId == u.Id).Any())
-                .Select(u => u.Id).ToList();
-
-            // 指定租户的菜单
-            var menuIds = _sysTenantMenuRep.AsQueryable().WhereIF(tenantId > 0, u => u.TenantId == tenantId).ToList(u => u.MenuId) ?? new();
-
-            // 种子菜单
-            menuIds.AddRange(new SysMenuSeedData().HasData().Select(u => u.Id).ToList());
-            menuIds.AddRange(unMenuIds);
-
-            menuIds = menuIds.Distinct().ToList();
-            query = _sysMenuRep.AsQueryable().InnerJoinIF<SysTenantMenu>(false, (u, t) => true).Where(u => menuIds.Contains(u.Id));
+            if (tenantId <= 0)
+            {
+                query = _sysMenuRep.AsQueryable().InnerJoinIF<SysTenantMenu>(false, (u, t) => true);
+            }
+            else
+            {
+                // 指定租户的菜单
+                var menuIds = _sysTenantMenuRep.AsQueryable().Where(u => u.TenantId == tenantId).ToList(u => u.MenuId) ?? new();
+
+                // 种子菜单
+                menuIds.AddRange(new SysMenuSeedData().HasData().Select(u => u.Id).ToList());
+
+                menuIds = menuIds.Distinct().ToList();
+                query = _sysMenuRep.AsQueryable().InnerJoinIF<SysTenantMenu>(false, (u, t) => true).Where(u => menuIds.Contains(u.Id));
+            }
         }
         else
         {