From a7287db2ada9ef606db5fe81cc8b66e2da44d345 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 10:56:22 +0800
Subject: [PATCH] pref:菜单排序

---
 FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenuQueryHandler.cs |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenuQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenuQueryHandler.cs
index b83b5a3..6229aa5 100644
--- a/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenuQueryHandler.cs
+++ b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenuQueryHandler.cs
@@ -34,12 +34,21 @@
                 .ProjectToType<GetMenuQueryResult>()
                 .FirstOrDefaultAsync(cancellationToken);
             if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ彍鍗�");
-            var items = await (from m in repMenu.AsQueryable().AsNoTracking()
-                               join rm in repRoleMenu.AsQueryable().AsNoTracking() on m.Id equals rm.MenuId
-                               join ur in repUserInfoRole.AsQueryable().AsNoTracking() on rm.RoleId equals ur.RoleId
-                               where m.ParentId == request.Id && ur.UserInfoId == logier.UserInfoId && !m.IsDisabled
-                               && (m.Type == EnumMenuType.Button || m.Type == EnumMenuType.Field)
-                               select m).ProjectToType<GetMenuQueryResultItem>().ToListAsync(cancellationToken);
+            var q = repMenu.AsQueryable().AsNoTracking()
+                .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime)
+                .Where(it => it.ParentId == model.Id)
+                .Where(it => it.Type == EnumMenuType.Button || it.Type == EnumMenuType.Field);
+            if (logier.Level != 999)
+            {
+                var menuIds = await repRoleMenu.AsQueryable().AsNoTracking()
+                    .Where(it => it.Role.UserInfoRoles.Any(ur => ur.UserInfoId == logier.UserInfoId))
+                    .Select(it => it.MenuId)
+                    .ToListAsync(cancellationToken);
+                q = q.Where(it => menuIds.Contains(it.Id));
+            }
+            var items = await q
+                .ProjectToType<GetMenuQueryResultItem>()
+                .ToListAsync(cancellationToken);
             model.Groups = items.GroupBy(it => it.Group ?? "default")
                 .Select(it => new GetMenuQueryResultGroup
                 {

--
Gitblit v1.9.1