From b4943813a032976e0febdd7f22d8bcf084e331c5 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 14:47:36 +0800
Subject: [PATCH] feat:字典开发

---
 FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs     |    2 
 FlexJobApi.Core/Entities/Common/DictionaryData.cs                                    |    2 
 FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs         |   57 +++++++++++++++++++++++++---
 FlexJobApi.Core/FlexJobApi.Core.csproj                                               |    1 
 FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs |    2 
 5 files changed, 55 insertions(+), 9 deletions(-)

diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
index 7df5b54..941c18a 100644
--- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
+++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
@@ -1,5 +1,7 @@
-锘縰sing FlexJobApi.Core;
+锘縰sing EFCore.BulkExtensions;
+using FlexJobApi.Core;
 using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
 using Furion.FriendlyException;
 using Mapster;
 using MediatR;
@@ -82,12 +84,55 @@
 
         public async Task<int> Handle(SyncHumanResourcesAreaDictionaryDataCommand request, CancellationToken cancellationToken)
         {
-            var rep = Db.GetRepository<BaseArea, HumanResourcesDbContextLocator>();
-            var areas = await rep.AsQueryable().AsNoTracking()
-                .Take(10)
+            var repHumanResourcesBaseArea = Db.GetRepository<BaseArea, HumanResourcesDbContextLocator>();
+            var areas = await repHumanResourcesBaseArea.AsQueryable().AsNoTracking()
+                .OrderBy(it => it.ParentId)
                 .ToListAsync();
-            Console.WriteLine();
-            return 1;
+            var entities = new List<DictionaryData>();
+            var categoryId = new Guid("B21FE000-BB7F-4498-08E9-08DDD572EF73");
+            await "DELETE FROM DictionaryData WHERE CategoryId = @CategoryId".SqlNonQueryAsync(new
+            {
+                CategoryId = categoryId
+            });
+            foreach (var area in areas)
+            {
+                var entity = new DictionaryData();
+                entity.CategoryId = categoryId;
+                entity.Id = area.Id;
+                if (area.ParentId != 0)
+                {
+                    var parent = entities.FirstOrDefault(it => it.Field1 == area.ParentId.ToString());
+                    if (parent == null)
+                    {
+                        var parentArea = areas.FirstOrDefault(it => it.AreaCode == area.ParentId);
+                        if (parentArea != null)
+                        {
+                            throw Oops.Oh(EnumErrorCodeType.s404, "鏈壘鍒颁笂绾у湴鍖�");
+                        }
+                        else
+                        {
+                            continue;
+                        }
+                    }
+                    entity.ParentId = parent.Id;
+                    entity.Path = $"{parent.Path}{parent.Code}/";
+                }
+                else
+                {
+                    entity.Path = "/";
+                }
+                entity.Code = $"70-{area.AreaCode}";
+                entity.Content = area.AreaName;
+                entity.Field1 = area.AreaCode.ToString();
+                entity.Field2 = area.QuickQuery;
+                entity.Field3 = area.SimpleSpelling;
+                entity.Field4 = area.Layer.ToString();
+                entity.Field5 = area.Description;
+                entity.Sort = area.Sort ?? 0;
+                entities.Add(entity);
+            }
+            await rep.Context.BulkInsertAsync(entities);
+            return entities.Count;
         }
     }
 }
diff --git a/FlexJobApi.Core/Entities/Common/DictionaryData.cs b/FlexJobApi.Core/Entities/Common/DictionaryData.cs
index bd142cd..b7d1383 100644
--- a/FlexJobApi.Core/Entities/Common/DictionaryData.cs
+++ b/FlexJobApi.Core/Entities/Common/DictionaryData.cs
@@ -13,7 +13,7 @@
     /// <summary>
     /// 瀛楀吀鏁版嵁
     /// </summary>
-    public class DictionaryData : CommonEntity, IEntityTypeBuilder<DictionaryData>, ITreeData<DictionaryData>, IIsDisabled
+    public class DictionaryData : CommonEntity, IEntityTypeBuilder<DictionaryData>, ITreeData<DictionaryData>, IIsDisabled, IDbAuditLogIgnore
     {
         public DictionaryData()
         {
diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj
index 3942b71..8977b6e 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.csproj
+++ b/FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -19,6 +19,7 @@
 	<ItemGroup>
 		<PackageReference Include="aliyun-net-sdk-core" Version="1.5.6" />
 		<PackageReference Include="Consul" Version="1.7.14.8" />
+		<PackageReference Include="EFCore.BulkExtensions" Version="9.0.1" />
 		<PackageReference Include="Furion" Version="4.9.7.106" />
 		<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.106" />
 		<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.106" />
diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
index 6b90dcf..bafb451 100644
--- a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
+++ b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.Dictionary], AllowAnonymous = false)]
     public class GetDictionaryCategorySelectQuery : SelectQuery<Guid, GetDictionaryCategorySelectQueryOption>
     {
     }
diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
index 5dc6774..4aa7df7 100644
--- a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
+++ b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣�
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.Dictionary], AllowAnonymous = false)]
     public class GetDictionaryDataSelectQuery : SelectQuery<Guid, GetDictionaryDataSelectQueryResultOption>
     {
         /// <summary>

--
Gitblit v1.9.1