From 350aa66d4818f85f042cb2d399691209dc97b97e Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 06 八月 2025 14:46:54 +0800
Subject: [PATCH] feat:字典开发

---
 FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs |   59 ++++++++++++++++++++++-------------------------------------
 1 files changed, 22 insertions(+), 37 deletions(-)

diff --git a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
index 67bde63..a4889e4 100644
--- a/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
+++ b/FlexJobApi.User.Application/Menus/Commands/SaveMenuFieldCommandHandler.cs
@@ -26,43 +26,28 @@
         {
             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, "鑿滃崟缂栧彿");
-                await rep.UpdateAsync(entity);
-                return entity.Id;
-            }
-            else
-            {
-                var entity = new Menu();
-                entity.Path = $"{parent.Path}{parent.Code}/";
-                entity.Type = EnumMenuType.Field;
-                entity.VisitLevel = parent.VisitLevel;
-                request.Adapt(entity);
-                if (await CheckExist(entity)) throw Oops.Oh(EnumErrorCodeType.s405, "鑿滃崟缂栧彿");
-                await rep.InsertAsync(entity);
-                return entity.Id;
-            }
+            return await request.SaveData<Menu, SaveMenuFieldCommand>(
+                it =>
+                    it.ParentId == request.ParentId
+                    && it.Type == EnumMenuType.Field
+                    && it.Group == request.Group
+                    && it.Code == request.Code
+                    && it.Id != request.Id,
+                (entity) =>
+                {
+                    if (request.Id.HasValue)
+                    {
+                        if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s410, "涓婄骇Id");
+                    }
+                    else
+                    {
+                        entity.Path = $"{parent.Path}{parent.Code}/";
+                        entity.Type = EnumMenuType.Field;
+                        entity.VisitLevel = parent.VisitLevel;
+                    }
+                    request.Adapt(entity);
+                },
+                cancellationToken);
         }
-
-        /// <summary>
-        /// 鏍¢獙鑿滃崟鏄惁閲嶅
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        private async Task<bool> CheckExist(Menu entity)
-        {
-            return await rep.AsQueryable().AsNoTracking()
-                .AnyAsync(it =>
-                    it.ParentId == entity.ParentId
-                    && it.Group == entity.Group
-                    && it.Code == entity.Code
-                    && it.Id != entity.Id);
-        }
-
     }
 }

--
Gitblit v1.9.1