From 74f7cb1840db9dc031ca1aa3d5db3de04df8b612 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 05 八月 2025 14:54:18 +0800
Subject: [PATCH] pref:优化

---
 FlexJobApi.User.Application/Menus/Queries/GetMenuQueryHandler.cs |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/FlexJobApi.User.Application/Menus/Queries/GetMenuQueryHandler.cs b/FlexJobApi.User.Application/Menus/Queries/GetMenuQueryHandler.cs
index 2f422db..90b739b 100644
--- a/FlexJobApi.User.Application/Menus/Queries/GetMenuQueryHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Queries/GetMenuQueryHandler.cs
@@ -1,5 +1,4 @@
 锘縰sing FlexJobApi.Core;
-using FlexJobApi.Core.Models;
 using Furion.DatabaseAccessor;
 using Furion.FriendlyException;
 using Mapster;
@@ -30,6 +29,11 @@
                 .ProjectToType<GetMenuQueryResult>()
                 .FirstOrDefaultAsync(cancellationToken);
             if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ彍鍗�");
+            var roleMenuIds =
+                request.RoleId.HasValue
+                ? rep.Change<RoleMenu>().Where(it => it.RoleId == request.RoleId).DistinctSelect(it => it.MenuId)
+                : [];
+            model.IsChecked = roleMenuIds.Contains(model.Id);
             var items = await rep.AsQueryable().AsNoTracking()
                 .Where(it => it.ParentId == model.Id)
                 .Where(it => it.Type == EnumMenuType.Button || it.Type == EnumMenuType.Field)
@@ -40,16 +44,28 @@
                 {
                     Group = it.Key,
                     ButtonLocations = it
-                        .Where(it => it.Type == EnumMenuType.Button)
-                        .GroupBy(it => it.Location ?? "default")
-                        .Select(it => new GetMenuQueryResultButtonLocation
-                        { 
-                            Location = it.Key,
-                            Buttons = it.ToList().Adapt<List<GetMenuQueryResultButton>>()
+                        .Where(l => l.Type == EnumMenuType.Button)
+                        .GroupBy(l => l.Location ?? "default")
+                        .Select(l => new GetMenuQueryResultButtonLocation
+                        {
+                            Location = l.Key,
+                            Buttons = l
+                                .Select(b =>
+                                {
+                                    b.IsChecked = roleMenuIds.Contains(b.Id);
+                                    return b;
+                                })
+                                .ToList()
+                                .Adapt<List<GetMenuQueryResultButton>>()
                         })
                         .ToList(),
                     Fields = it
-                        .Where(it => it.Type == EnumMenuType.Field)
+                        .Where(f => f.Type == EnumMenuType.Field)
+                        .Select(f =>
+                        {
+                            f.IsChecked = roleMenuIds.Contains(f.Id);
+                            return f;
+                        })
                         .ToList()
                         .Adapt<List<GetMenuQueryResultField>>()
                 })

--
Gitblit v1.9.1