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