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