From 1d2953530fc3019ffc2bbe71f4de2ab7820fe528 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 11 八月 2025 17:26:31 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs |   52 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
index 1d96d5b..5443518 100644
--- a/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
+++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
@@ -18,7 +18,8 @@
     public class DictionaryDatasQueryHandler(
             IRepository<DictionaryData> rep
         ) : IRequestHandler<GetDictionaryDatasQuery, PagedListQueryResult<GetDictionaryDatasQueryResultItem>>,
-            IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>>
+            IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>>,
+            IRequestHandler<GetAreaSelectQuery, List<GetAreaSelectQueryResultOption>>
     {
         private readonly IRepository<DictionaryData> rep = rep;
 
@@ -71,15 +72,15 @@
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken)
+        public async Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken)
         {
-            return request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>(
+            var models = await request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>(
                 it => it.Code,
                 it => it.Content,
                 q =>
                 {
                     q = q
-                        .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime)
+                        .OrderBy(it => it.Sort)
                         .Where(it => !it.IsDisabled);
                     if (request.All != true)
                     {
@@ -115,6 +116,49 @@
                     return q;
                 },
                 cancellationToken);
+            if (request.WithChildren)
+            {
+                var parents = models.Where(it => it.Data.ParentId == null).ToList();
+                LoopChildrens(parents, models);
+                return parents;
+            }
+            return models;
+        }
+
+        /// <summary>
+        /// 鏌ヨ鍦板尯閫夋嫨鍣�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<List<GetAreaSelectQueryResultOption>> Handle(GetAreaSelectQuery request, CancellationToken cancellationToken)
+        {
+            var models = await Handle(new GetDictionaryDataSelectQuery
+            {
+                CategoryCode = "70",
+                All = true,
+                MaxDeep = request.MaxDeep,
+                WithChildren = true
+            }, cancellationToken);
+            var result = models.Adapt<List<GetAreaSelectQueryResultOption>>();
+            return result;
+        }
+
+        /// <summary>
+        /// 閫掑綊璧嬪�间笅绾�
+        /// </summary>
+        /// <param name="models"></param>
+        /// <param name="all"></param>
+        private void LoopChildrens(List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> models, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> all)
+        {
+            foreach (var item in models)
+            {
+                item.Data.Children = all.Where(it => it.Data.ParentId == item.Data.Id).ToList();
+                if (item.Data.Children.IsNotNull())
+                {
+                    LoopChildrens(item.Data.Children, all);
+                }
+            }
         }
     }
 }

--
Gitblit v1.9.1