From a8b475881959d4a88d821951a615f03e7d0d1725 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 13:28:30 +0800
Subject: [PATCH] feat:字典优化

---
 FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
index ec0ca8a..e334e79 100644
--- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
+++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
@@ -1,4 +1,7 @@
 锘縰sing FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Mapster;
 using MediatR;
 using System;
 using System.Collections.Generic;
@@ -11,10 +14,16 @@
     /// <summary>
     /// 瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
     /// </summary>
-    public class DictionaryCategoryCommandHandler :
+    public class DictionaryCategoryCommandHandler(
+            IRepository<DictionaryCategory> rep,
+            IRepository<DictionaryData> repDictionaryData
+        ) :
         IRequestHandler<DeleteDictionaryCategoryCommand, int>,
         IRequestHandler<SaveDictionaryCategoryCommand, Guid>
     {
+        private readonly IRepository<DictionaryCategory> rep = rep;
+        private readonly IRepository<DictionaryData> repDictionaryData = repDictionaryData;
+
         /// <summary>
         /// 鍒犻櫎鏁版嵁瀛楀吀绫诲埆
         /// </summary>
@@ -32,10 +41,27 @@
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
+        [UnitOfWork]
         public Task<Guid> Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken)
         {
             return request.SaveData<DictionaryCategory, SaveDictionaryCategoryCommand>(
-                 (q, e, r) => q.Any(it => it.Id != request.Id && it.Code == request.Code),
+                 null,
+                 it => it.Id != request.Id && it.Code == request.Code,
+                 (entity) =>
+                 {
+                     if (request.Id.HasValue && entity.Code != request.Code)
+                     {
+                         throw Oops.Oh(EnumErrorCodeType.s400, "缂栧彿涓嶅彲淇敼");
+                         //var data = repDictionaryData.AsQueryable()
+                         //   .Where(it => it.CategoryId == entity.Id)
+                         //   .ToList();
+                         //foreach (var item in data)
+                         //{
+                         //    item.Code = item.Code.Replace($"{entity.Code}-", $"{request.Code}-");
+                         //}
+                     }
+                     request.Adapt(entity);
+                 },
                  cancellationToken);
         }
     }

--
Gitblit v1.9.1