From 9fd157a63dfbb8ee9f32fff7540c97eb4a3d3cce Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 01 八月 2025 17:00:30 +0800
Subject: [PATCH] feat:菜单开发

---
 FlexJobApi.User.Application/Menus/Queries/MenuListQueryHandler.cs |   33 +++++++++++++++++----------------
 1 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/FlexJobApi.User.Application/Menus/Queries/MenuListQueryHandler.cs b/FlexJobApi.User.Application/Menus/Queries/MenuListQueryHandler.cs
index 6cfd83b..9f50732 100644
--- a/FlexJobApi.User.Application/Menus/Queries/MenuListQueryHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Queries/MenuListQueryHandler.cs
@@ -12,10 +12,10 @@
 namespace FlexJobApi.User.Application
 {
     /// <summary>
-    /// 鏌ヨ鎵�鏈夎彍鍗�
+    /// 鏌ヨ鑿滃崟/椤甸潰/妯℃�佹鍒楄〃
     /// </summary>
     public class MenuListQueryHandler(
-        IRepository<Menu> menuRep) 
+        IRepository<Menu> menuRep)
         : IRequestHandler<MenuListQuery, MenuListCallback>
     {
         private readonly IRepository<Menu> menuRep = menuRep;
@@ -23,21 +23,22 @@
         /// <inheritdoc/>
         public async Task<MenuListCallback> Handle(MenuListQuery request, CancellationToken cancellationToken)
         {
-            var config = new TypeAdapterConfig();
-            config.Default.MaxDepth(10);
             var callback = new MenuListCallback();
-            callback.Items = await menuRep.AsQueryable()
-              .Include(it => it.Childrens.Where(c =>
-                    c.Type == EnumMenuType.Menu
-                    || c.Type == EnumMenuType.Page
-                    || c.Type == EnumMenuType.Modal))
-              .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime)
-              .Where(it =>
-                    it.Type == EnumMenuType.Menu
-                    || it.Type == EnumMenuType.Page
-                    || it.Type == EnumMenuType.Modal)
-              .ProjectToType<MenuListCallbackItem>(config)
-              .ToListAsync(cancellationToken);
+            var q = menuRep.AsQueryable().AsNoTracking()
+                .Where(it => it.Type == EnumMenuType.Menu || it.Type == EnumMenuType.Page || it.Type == EnumMenuType.Modal);
+            if (request.ParentId.HasValue)
+            {
+                q = q.Where(it => it.ParentId == request.ParentId);
+            }
+            if (!string.IsNullOrEmpty(request.Keywords))
+            {
+                q = q.Where(it =>
+                    it.Name.Contains(request.Keywords)
+                    || it.Code.Contains(request.Keywords)
+                    || it.Path.Contains(request.Keywords)
+                    || it.Remark.Contains(request.Keywords));
+            }
+            callback.Items = await q.ProjectToType<MenuListCallbackItem>().ToListAsync();
             return callback;
         }
     }

--
Gitblit v1.9.1