From d3f1887ba4a8b4ad822406a7a4fc97dbfea91850 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 04 八月 2025 09:09:34 +0800
Subject: [PATCH] feat:菜单开发

---
 FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs |   45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
index 00df62e..b7448be 100644
--- a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
+++ b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
@@ -14,6 +14,35 @@
         /// <summary>
         /// 鑾峰彇妯″瀷
         /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static async Task<EnumModel<T>> GetModel<T>()
+            where T : struct
+        {
+            var type = typeof(T);
+            var model = new EnumModel<T>();
+            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<T>();
+                item.Name = enumValue.ToString();
+                item.Value = (int)enumValue;
+                item.Enum = (T)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;
+        }
+
+        /// <summary>
+        /// 鑾峰彇妯″瀷
+        /// </summary>
         /// <param name="type"></param>
         /// <returns></returns>
         public static async Task<EnumModel> GetModel(this Type type)
@@ -36,5 +65,21 @@
             }
             return model;
         }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="model"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static T GetEnum<T>(this EnumModel<T> model, string name)
+            where T : struct
+        {
+            return model.Items
+               .Where(it => it.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
+               .Select(it => it.Enum)
+               .FirstOrDefault();
+        }
     }
 }

--
Gitblit v1.9.1