From a01fa150d1652e32064cf155cb3317618961e230 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 01 八月 2025 16:10:57 +0800
Subject: [PATCH] feat:文档枚举注释添加

---
 FlexJobApi.Core/settings.json                          |    3 
 FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs |   17 -----
 FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs           |   49 ++++++++++++++++
 FlexJobApi.Core/FlexJobApi.Core.xml                    |   30 ++++++++++
 FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs           |   32 ++++++++++
 5 files changed, 114 insertions(+), 17 deletions(-)

diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 69a3b11..5bdfaf7 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -2188,6 +2188,36 @@
             <param name="dbContextLocator"></param>
             <returns></returns>
         </member>
+        <member name="P:FlexJobApi.Core.EnumModel.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnumModel.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnumModel.Items">
+            <summary>
+            鏋氫妇椤�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnumModelItem.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnumModelItem.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnumModelItem.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.EventBusServiceComponent">
             <summary>
             浜嬩欢鎬荤嚎
diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs
new file mode 100644
index 0000000..73fb052
--- /dev/null
+++ b/FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs
@@ -0,0 +1,49 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    public class EnumModel
+    {
+        public EnumModel()
+        {
+            Items = [];
+        }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鏋氫妇椤�
+        /// </summary>
+        public List<EnumModelItem> Items { get; set; }
+    }
+
+    public class EnumModelItem
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        public int Value { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string Description { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
new file mode 100644
index 0000000..2f17914
--- /dev/null
+++ b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    public static class EnumUtils
+    {
+        public static async Task<EnumModel> GetModel(this Type type)
+        {
+            var model = new EnumModel();
+            var xmlDoc = await XmlDocUtils.GetXmlDocAsync();
+            var xmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(type, xmlDoc);
+            model.Name = type.Name;
+            model.Description = xmlDocMember?.Summary;
+
+            foreach (var enumValue in Enum.GetValues(type))
+            {
+                var item = new EnumModelItem();
+                item.Name = enumValue.ToString();
+                item.Value = (int)enumValue;
+                var enumMember = type.GetMember(enumValue.ToString()).FirstOrDefault();
+                var enumXmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(enumMember, xmlDoc);
+                item.Description = enumXmlDocMember?.Summary;
+                model.Items.Add(item);
+            }
+            return model;
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs b/FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs
index 31491dd..39ff965 100644
--- a/FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs
+++ b/FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs
@@ -18,23 +18,8 @@
             if (context.Type.IsEnum)
             {
                 // 鏋氫妇绫诲瀷鐨勬弿杩帮紙鏉ヨ嚜鏋氫妇鏈韩鐨勬敞閲婏級
-                schema.Description ??= GetEnumDescription(context.Type);
+                schema.Description = EnumUtils.GetModel(context.Type).Result.ToJson();
             }
-        }
-
-        // 鑾峰彇鏋氫妇绫诲瀷鐨勬敞閲�
-        private string GetEnumDescription(Type enumType)
-        {
-            var xmlDoc = XmlDocUtils.GetXmlDocAsync().Result;
-            var member = XmlDocUtils.GetXmlDocMemberAsync(enumType, xmlDoc).Result;
-            var description = member?.Summary ?? "";
-            foreach (var enumValue in Enum.GetValues(enumType))
-            {
-                var enumMember = enumType.GetMember(enumValue.ToString()).First();
-                var enumXmlDocMember = XmlDocUtils.GetXmlDocMemberAsync(enumMember, xmlDoc).Result;
-                description += $"{enumValue}-{enumXmlDocMember?.Summary} ";
-            }
-            return description;
         }
     }
 }
diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json
index 05ffed3..2809bcb 100644
--- a/FlexJobApi.Core/settings.json
+++ b/FlexJobApi.Core/settings.json
@@ -11,7 +11,8 @@
           "Name": "瀛欓箯椋�"
         }
       }
-    ]
+    ],
+    "EnumToNumber": true
   },
   "CorsAccessorSettings": {
     "WithExposedHeaders": [

--
Gitblit v1.9.1