From b4205c80b0fd6220632fa0ab7df4c75ba844afc4 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 07 八月 2025 15:13:21 +0800 Subject: [PATCH] feat:字典开发 --- FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs | 4 ++ FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs | 86 ++++++++++++++++++++++++------------------- FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs | 5 ++ 3 files changed, 57 insertions(+), 38 deletions(-) diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs index 819710c..ac2f0cf 100644 --- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs +++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs @@ -1,4 +1,5 @@ -锘縰sing EFCore.BulkExtensions; +锘縰sing Consul; +using EFCore.BulkExtensions; using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; @@ -94,45 +95,54 @@ { 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); - } + var parentAreas = areas.Where(it => it.ParentId == 0).ToList(); + LoopAdd(categoryId, entities, areas, parentAreas); await rep.Context.BulkInsertAsync(entities); return entities.Count; } + + public void LoopAdd(Guid categoryId, List<DictionaryData> entities, List<BaseArea> all, List<BaseArea> areas) + { + if (areas.IsNotNull()) + { + 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, "涓婄骇鍦板尯"); + } + 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); + + var children = all.Where(it => it.ParentId == area.AreaCode).ToList(); + LoopAdd(categoryId, entities, all, children); + } + } + } } } diff --git a/FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs b/FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs index 35b487f..6655481 100644 --- a/FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs +++ b/FlexJobApi.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs @@ -46,6 +46,10 @@ { throw Oops.Oh(EnumErrorCodeType.s400, "璇峰~鍐欑被鍒獻d鎴栫紪鍙�"); } + if (request.ParentId.HasValue) + { + q = q.Where(it => it.ParentId == request.ParentId); + } if (request.Keywords.IsNotNull()) { q = q.Where(it => diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs index 5b3c518..aa54be6 100644 --- a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryDatasQuery.cs @@ -26,6 +26,11 @@ public string CategoryCode { get; set; } /// <summary> + /// 涓婄骇Id + /// </summary> + public Guid? ParentId { get; set; } + + /// <summary> /// 鍏抽敭瀛� /// </summary> public string Keywords { get; set; } -- Gitblit v1.9.1