From 177aa6f1c4601e4fb34aff04c4e328c98b489888 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 10:17:14 +0800
Subject: [PATCH] fix:bug

---
 FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs
index e89cda8..4176b12 100644
--- a/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs
+++ b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs
@@ -31,14 +31,19 @@
         public async Task<List<GetMenusQueryResultItem>> Handle(GetCurrentLogierMenusQuery request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();
-            var all = await (from m in repMenu.AsQueryable().AsNoTracking()
-                             join rm in repRoleMenu.AsQueryable().AsNoTracking() on m.Id equals rm.MenuId into rmg
-                             from rmgi in rmg.DefaultIfEmpty()
-                             join ur in repUserInfoRole.AsQueryable().AsNoTracking() on rmgi.RoleId equals ur.RoleId into urg
-                             from urgi in urg.DefaultIfEmpty()
-                             where (logier.Level == 999 || urgi.UserInfoId == logier.UserInfoId) && !m.IsDisabled
-                             && (m.Type == EnumMenuType.Menu || m.Type == EnumMenuType.Page || m.Type == EnumMenuType.Modal)
-                             select m).ProjectToType<GetMenusQueryResultItem>().ToListAsync();
+            var q = repMenu.AsQueryable().AsNoTracking()
+                .OrderBy(it => it.Sort)
+                .Where(it => it.UserType == logier.Type && it.ClientType == logier.ClientType)
+                .Where(it => it.Type == EnumMenuType.Menu || it.Type == EnumMenuType.Page || it.Type == EnumMenuType.Modal);
+            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 all = await q.ProjectToType<GetMenusQueryResultItem>().ToListAsync();
             var models = all.Where(it => it.ParentId == null).ToList();
             LoopChildrens(models, all, []);
             return models;

--
Gitblit v1.9.1