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

---
 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs                                         |    6 +++++-
 FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs             |    1 +
 FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs       |    1 +
 FlexJobApi.Core/FlexJobApi.Core.xml                                              |    3 ++-
 FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs |    1 +
 FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs        |    1 +
 FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs     |    1 +
 7 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
index e2dc9f6..c28aaeb 100644
--- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
+++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
@@ -35,6 +35,7 @@
         public Task<Guid> Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken)
         {
             return request.SaveData<DictionaryCategory, SaveDictionaryCategoryCommand>(
+                 null,
                  it => it.Id != request.Id && it.Code == request.Code,
                  null,
                  cancellationToken);
diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
index f9c7a0b..64ebaff 100644
--- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
+++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
@@ -28,6 +28,7 @@
         public Task<Guid> Handle(SaveDictionaryDataCommand request, CancellationToken cancellationToken)
         {
             return request.SaveData<DictionaryData, SaveDictionaryDataCommand>(
+                null,
                 it =>
                     it.CategoryId == request.CategoryId
                     && it.ParentId == request.ParentId
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index e1b7912..5781243 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -4389,13 +4389,14 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
-        <member name="M:FlexJobApi.Core.DbUtils.SaveData``2(``1,System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Action{``0},System.Threading.CancellationToken)">
+        <member name="M:FlexJobApi.Core.DbUtils.SaveData``2(``1,System.Func{System.Linq.IQueryable{``0},System.Linq.IQueryable{``0}},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Action{``0},System.Threading.CancellationToken)">
             <summary>
             淇濆瓨鏁版嵁
             </summary>
             <typeparam name="TEntity"></typeparam>
             <typeparam name="TRequest"></typeparam>
             <param name="request"></param>
+            <param name="query"></param>
             <param name="checkExist"></param>
             <param name="update"></param>
             <param name="cancellationToken"></param>
diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
index 03c260d..46a2dc2 100644
--- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
+++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
@@ -305,12 +305,14 @@
         /// <typeparam name="TEntity"></typeparam>
         /// <typeparam name="TRequest"></typeparam>
         /// <param name="request"></param>
+        /// <param name="query"></param>
         /// <param name="checkExist"></param>
         /// <param name="update"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         public static async Task<Guid> SaveData<TEntity, TRequest>(
             this TRequest request,
+            Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
             Expression<Func<TEntity, bool>> checkExist = null,
             Action<TEntity> update = null,
             CancellationToken cancellationToken = default)
@@ -324,7 +326,9 @@
                 throw Oops.Oh(EnumErrorCodeType.s405, $"璇summary ?? "淇℃伅"}");
             if (request.Id.HasValue)
             {
-                var entity = await rep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken);
+                var q = rep.AsQueryable();
+                if (query != null) q = query(q);
+                var entity = await q.FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken);
                 if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}");
                 if (update != null) update(entity);
                 else request.Adapt(entity);
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
index 8f77325..87db6f8 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuButtonCommandHandler.cs
@@ -27,6 +27,7 @@
             var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId);
             if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟");
             return await request.SaveData<Menu, SaveMenuButtonCommand>(
+                null,
                 it =>
                     it.ParentId == request.ParentId
                     && it.Type == EnumMenuType.Button
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
index 2360402..b948e38 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuCommandHandler.cs
@@ -31,6 +31,7 @@
         public async Task<Guid> Handle(SaveMenuCommand request, CancellationToken cancellationToken)
         {
             return await request.SaveData<Menu, SaveMenuCommand>(
+                q => q.Include(it => it.Children),
                 it =>
                     it.UserType == request.UserType
                     && it.ClientType == request.ClientType
diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
index a4889e4..122784d 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
@@ -27,6 +27,7 @@
             var parent = await rep.FirstOrDefaultAsync(it => it.Id == request.ParentId);
             if (parent == null) throw Oops.Oh(EnumErrorCodeType.s404, "涓婄骇鑿滃崟");
             return await request.SaveData<Menu, SaveMenuFieldCommand>(
+                null,
                 it =>
                     it.ParentId == request.ParentId
                     && it.Type == EnumMenuType.Field

--
Gitblit v1.9.1