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/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..0243da5 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).ThenBy(it => it.CreatedTime) + .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