From 7374d934381f81e835314f60dc411b963614d803 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 04 八月 2025 18:36:29 +0800
Subject: [PATCH] pref:菜单优化

---
 FlexJobApi.User.Application/FlexJobApi.User.Application.xml                |   74 ++++++++++++++++++
 FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs       |    2 
 FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs |    6 +
 FlexJobApi.Core/FlexJobApi.Core.xml                                        |  135 +++++++++++++++++++++++++++++++++
 FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs  |    6 +
 5 files changed, 223 insertions(+), 0 deletions(-)

diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 99f0bef..db1dfaa 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1984,6 +1984,61 @@
             鍒犻櫎鑿滃崟
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.SaveMenuButtonCommand">
+            <summary>
+            淇濆瓨鑿滃崟鎸夐挳
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.ParentId">
+            <summary>
+            鑿滃崟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Group">
+            <summary>
+            鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Location">
+            <summary>
+            浣嶇疆锛堢敤浜庢寜閽級
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Width">
+            <summary>
+            瀹藉害锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuButtonCommand.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.SaveMenuCommand">
             <summary>
             淇濆瓨鑿滃崟
@@ -2174,6 +2229,86 @@
             澶囨敞
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.SaveMenuFieldCommand">
+            <summary>
+            淇濆瓨鑿滃崟瀛楁
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.ParentId">
+            <summary>
+            鑿滃崟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Group">
+            <summary>
+            鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Location">
+            <summary>
+            浣嶇疆锛堢敤浜庢寜閽級
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Width">
+            <summary>
+            瀹藉害锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveMenuFieldCommand.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SetMenuSwitchCommand">
+            <summary>
+            璁剧疆鑿滃崟鍒囨崲淇℃伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SetMenuSwitchCommand.Ids">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SetMenuSwitchCommand.Type">
+            <summary>
+            绫诲瀷锛坣ull鏃朵笉鏇存柊锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SetMenuSwitchCommand.IsDisabled">
+            <summary>
+            鏄惁绂佺敤锛坣ull鏃朵笉鏇存柊锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SetMenuSwitchCommand.IsCache">
+            <summary>
+            鏄惁缂撳瓨锛坣ull鏃朵笉鏇存柊锛�
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.Models.GetMenuQuery">
             <summary>
             鏌ヨ鑿滃崟璇︽儏
diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
index 8529978..aca41b0 100644
--- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
+++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
@@ -67,6 +67,26 @@
         <member name="M:FlexJobApi.User.Application.DeleteMenuCommandHandler.Handle(FlexJobApi.Core.DeleteMenuCommand,System.Threading.CancellationToken)">
             <inheritdoc/>
         </member>
+        <member name="T:FlexJobApi.User.Application.SaveMenuButtonCommandHandler">
+            <summary>
+            淇濆瓨鑿滃崟鎸夐挳
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuButtonCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Menu})">
+            <summary>
+            淇濆瓨鑿滃崟鎸夐挳
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuButtonCommandHandler.Handle(FlexJobApi.Core.SaveMenuButtonCommand,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuButtonCommandHandler.CheckExist(FlexJobApi.Core.Menu)">
+            <summary>
+            鏍¢獙鑿滃崟鏄惁閲嶅
+            </summary>
+            <param name="entity"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.User.Application.SaveMenuCommandHandler">
             <summary>
             淇濆瓨鑿滃崟
@@ -128,6 +148,39 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.User.Application.SaveMenuFieldCommandHandler">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuFieldCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Menu})">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuFieldCommandHandler.Handle(FlexJobApi.Core.SaveMenuFieldCommand,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SaveMenuFieldCommandHandler.CheckExist(FlexJobApi.Core.Menu)">
+            <summary>
+            鏍¢獙鑿滃崟鏄惁閲嶅
+            </summary>
+            <param name="entity"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.User.Application.SetMenuSwitchCommandHandler">
+            <summary>
+            璁剧疆鑿滃崟鍒囨崲淇℃伅
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SetMenuSwitchCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Menu})">
+            <summary>
+            璁剧疆鑿滃崟鍒囨崲淇℃伅
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.SetMenuSwitchCommandHandler.Handle(FlexJobApi.Core.SetMenuSwitchCommand,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
         <member name="T:FlexJobApi.User.Application.MenuAppService">
             <summary>
             鑿滃崟
@@ -159,6 +212,27 @@
             <param name="command"></param>
             <returns></returns>
         </member>
+        <member name="M:FlexJobApi.User.Application.MenuAppService.SaveMenuButton(FlexJobApi.Core.SaveMenuButtonCommand)">
+            <summary>
+            淇濆瓨鑿滃崟鎸夐挳
+            </summary>
+            <param name="command"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.User.Application.MenuAppService.SaveMenuField(FlexJobApi.Core.SaveMenuFieldCommand)">
+            <summary>
+            淇濆瓨鑿滃崟瀛楁
+            </summary>
+            <param name="command"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.User.Application.MenuAppService.SetMenuSwitch(FlexJobApi.Core.SetMenuSwitchCommand)">
+            <summary>
+            璁剧疆鑿滃崟鍒囨崲淇℃伅
+            </summary>
+            <param name="command"></param>
+            <returns></returns>
+        </member>
         <member name="M:FlexJobApi.User.Application.MenuAppService.DeleteMenu(FlexJobApi.Core.DeleteMenuCommand)">
             <summary>
             鍒犻櫎鑿滃崟
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
index 21d9a7e..3816ddf 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
@@ -24,9 +24,12 @@
         /// <inheritdoc/>
         public async Task<Guid> Handle(SaveMenuButtonCommand request, CancellationToken cancellationToken)
         {
+            var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId);
+            if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟");
             if (request.Id.HasValue)
             {
                 var entity = await rep.FirstOrDefaultAsync(it => it.Id == it.Id);
+                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ彍鍗�");
                 if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s410, "涓婄骇Id");
                 request.Adapt(entity);
                 if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿");
@@ -36,6 +39,9 @@
             else
             {
                 var entity = new Menu();
+                entity.Path = $"{parent.Path}{parent.Code}/";
+                entity.Type = EnumMenuType.Button;
+                entity.VisitLevel = parent.VisitLevel;
                 request.Adapt(entity);
                 if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿");
                 await rep.InsertAsync(entity);
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
index a7f7c2a..59550fc 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
@@ -98,6 +98,7 @@
                                 UserType = entity.UserType,
                                 ClientType = entity.ClientType,
                                 Type = EnumMenuType.Button,
+                                VisitLevel = entity.VisitLevel,
                             };
                             entity.Children.Add(buttonEntity);
                         }
@@ -121,6 +122,7 @@
                             UserType = entity.UserType,
                             ClientType = entity.ClientType,
                             Type = EnumMenuType.Field,
+                            VisitLevel = entity.VisitLevel,
                         };
                         entity.Children.Add(fieldEntity);
                     }
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
index 774ce2f..5bf2ae7 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
@@ -24,9 +24,12 @@
         /// <inheritdoc/>
         public async Task<Guid> Handle(SaveMenuFieldCommand request, CancellationToken cancellationToken)
         {
+            var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId);
+            if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟");
             if (request.Id.HasValue)
             {
                 var entity = await rep.FirstOrDefaultAsync(it => it.Id == it.Id);
+                if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ彍鍗�");
                 if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s410, "涓婄骇Id");
                 request.Adapt(entity);
                 if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿");
@@ -36,6 +39,9 @@
             else
             {
                 var entity = new Menu();
+                entity.Path = $"{parent.Path}{parent.Code}/";
+                entity.Type = EnumMenuType.Button;
+                entity.VisitLevel = parent.VisitLevel;
                 request.Adapt(entity);
                 if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿");
                 await rep.InsertAsync(entity);

--
Gitblit v1.9.1