Преглед на файлове

fix: 修复存在重复id构建菜单树导致的bug

喵你个旺呀 преди 1 година
родител
ревизия
9448099458
променени са 1 файла, в които са добавени 5 реда и са изтрити 5 реда
  1. 5 5
      Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

+ 5 - 5
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -49,14 +49,14 @@ public class SysMenuService : IDynamicApiController, ITransient
             var menuList = 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)
-                .OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0);
+                .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)
-            .OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray());
+            .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>>();
     }
@@ -99,12 +99,12 @@ public class SysMenuService : IDynamicApiController, ITransient
             return await query.WhereIF(!string.IsNullOrWhiteSpace(input.Title), u => u.Title.Contains(input.Title))
                 .WhereIF(input.Type is > 0, u => u.Type == input.Type)
                 .WhereIF(menuIdList.Count > 1, u => menuIdList.Contains(u.Id))
-                .OrderBy(u => new { u.OrderNo, u.Id }).ToListAsync();
+                .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToListAsync();
         }
 
         return _userManager.SuperAdmin ?
-            await query.OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0) :
-            await query.OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray()); // 角色菜单授权时
+            await query.OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0) :
+            await query.OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray()); // 角色菜单授权时
     }
 
     /// <summary>