Explorar o código

优化枚举值服务

King %!s(int64=3) %!d(string=hai) anos
pai
achega
55b4e7083f

+ 11 - 6
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -5470,19 +5470,24 @@
             字段名称
             </summary>
         </member>
-        <member name="T:Admin.NET.Core.Service.EnumDataOutput">
+        <member name="T:Admin.NET.Core.Service.EnumTypeOutput">
             <summary>
-            枚举输出参数
+            枚举类型输出参数
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.Service.EnumDataOutput.Code">
+        <member name="P:Admin.NET.Core.Service.EnumTypeOutput.TypeDescribe">
             <summary>
-            字典Id
+            枚举类型描述
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.Service.EnumDataOutput.Value">
+        <member name="P:Admin.NET.Core.Service.EnumTypeOutput.TypeName">
             <summary>
-            字典值
+            枚举类型名称
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.Service.EnumTypeOutput.TypeRemark">
+            <summary>
+            枚举类型备注
             </summary>
         </member>
         <member name="T:Admin.NET.Core.Service.SysEnumDataService">

+ 3 - 1
Admin.NET/Admin.NET.Core/Service/Enum/Dto/EnumDataInput.cs

@@ -10,7 +10,7 @@ public class EnumDataInput
     /// <summary>
     /// 枚举类型名称
     /// </summary>
-    /// <example>Gender</example>
+    /// <example>AccountTypeEnum</example>
     [Required(ErrorMessage = "枚举类型不能为空")]
     public string EnumName { get; set; }
 }
@@ -20,12 +20,14 @@ public class QueryEnumDataInput
     /// <summary>
     /// 实体名称
     /// </summary>
+    /// <example>SysUser</example>
     [Required(ErrorMessage = "实体名称不能为空")]
     public string EntityName { get; set; }
 
     /// <summary>
     /// 字段名称
     /// </summary>
+    /// <example>AccountType</example>
     [Required(ErrorMessage = "字段名称不能为空")]
     public string FieldName { get; set; }
 }

+ 11 - 6
Admin.NET/Admin.NET.Core/Service/Enum/Dto/EnumDataOutput.cs

@@ -1,17 +1,22 @@
 namespace Admin.NET.Core.Service;
 
 /// <summary>
-/// 枚举输出参数
+/// 枚举类型输出参数
 /// </summary>
-public class EnumDataOutput
+public class EnumTypeOutput
 {
     /// <summary>
-    /// 字典Id
+    /// 枚举类型描述
     /// </summary>
-    public int Code { get; set; }
+    public string TypeDescribe { get; set; }
 
     /// <summary>
-    /// 字典值
+    /// 枚举类型名称
     /// </summary>
-    public string Value { get; set; }
+    public string TypeName { get; set; }
+
+    /// <summary>
+    /// 枚举类型备注
+    /// </summary>
+    public string TypeRemark { get; set; }
 }

+ 18 - 41
Admin.NET/Admin.NET.Core/Service/Enum/SysEnumDataService.cs

@@ -3,7 +3,7 @@
 /// <summary>
 /// 枚举值服务
 /// </summary>
-[ApiDescriptionSettings(Name = "SysEnumData", Order = 1000)]
+[ApiDescriptionSettings(Order = 1000)]
 [AllowAnonymous]
 public class SysEnumDataService : IDynamicApiController, ITransient
 {
@@ -18,11 +18,11 @@ public class SysEnumDataService : IDynamicApiController, ITransient
     /// 获取所有枚举值
     /// </summary>
     /// <returns></returns>
-    [HttpGet("/sysEnumData/enumTypeList")]
-    public dynamic GetEnumTypeList()
+    [HttpGet]
+    public List<EnumTypeOutput> GetEnumTypeList()
     {
 
-        List<dynamic> result = new List<dynamic>();
+        List<EnumTypeOutput> result = new List<EnumTypeOutput>();
         var enumTypeList = App.EffectiveTypes.Where(t => t.IsEnum && _enumOptions.EntityAssemblyNames.Contains(t.Assembly.GetName().Name)).ToList();
 
         foreach (var item in enumTypeList)
@@ -32,7 +32,7 @@ public class SysEnumDataService : IDynamicApiController, ITransient
         return result;
     }
 
-    private dynamic GetEnumDescription(Type type)
+    private EnumTypeOutput GetEnumDescription(Type type)
     {
 
         string description = type.Name;
@@ -43,12 +43,11 @@ public class SysEnumDataService : IDynamicApiController, ITransient
             var att = ((DescriptionAttribute[])attrs)[0];
             description = att.Description;
         }
-        return new
+        return new EnumTypeOutput
         {
-            Name = description,
-            Code = type.Name,
-            Sort = 100,
-            Remark = description
+            TypeDescribe = description,
+            TypeName = type.Name,
+            TypeRemark = description
         };
     }
 
@@ -57,22 +56,15 @@ public class SysEnumDataService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [HttpGet("/sysEnumData/list")]
-    public async Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input)
+    [HttpGet]
+    public List<EnumEntity> GetEnumDataList([FromQuery] EnumDataInput input)
     {
         // 查找枚举
         var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == input.EnumName);
-        if (enumType == null)
-            throw Oops.Oh(ErrorCodeEnum.D1502).StatusCode(405);
+        if (enumType is not { IsEnum: true })
+            throw Oops.Oh(ErrorCodeEnum.D1503);
 
-        //// 获取枚举的Key和描述
-        return await Task.Run(() =>
-               EnumExtension.GetEnumDescDictionary(enumType)
-               .Select(x => new EnumDataOutput
-               {
-                   Code = x.Key,
-                   Value = x.Value
-               }));
+        return enumType.EnumToList();
     }
 
     /// <summary>
@@ -80,33 +72,18 @@ public class SysEnumDataService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [HttpGet("/sysEnumData/listByFiled")]
-    public async Task<dynamic> GetEnumDataListByField([FromQuery] QueryEnumDataInput input)
+    [HttpGet]
+    public List<EnumEntity> GetEnumDataListByField([FromQuery] QueryEnumDataInput input)
     {
 
         // 获取实体类型属性
-        Type entityType = null;
-
-        foreach (var item in _enumOptions.EntityAssemblyNames)
-        {
-            entityType = Type.GetType($"{item}.Entity.{input.EntityName}");
-            if (entityType != null)
-                break;
-        }
-        if (entityType == null) throw Oops.Oh(ErrorCodeEnum.D1504);
+        Type entityType = App.EffectiveTypes.FirstOrDefault(t =>t.Name == input.EntityName) ?? throw Oops.Oh(ErrorCodeEnum.D1504);
 
         // 获取字段类型
         var fieldType = entityType.GetProperties().FirstOrDefault(p => p.Name == input.FieldName)?.PropertyType;
         if (fieldType is not { IsEnum: true })
             throw Oops.Oh(ErrorCodeEnum.D1503);
 
-        // 获取枚举的Key和描述
-        return await Task.Run(() =>
-               EnumExtension.GetEnumDescDictionary(fieldType)
-               .Select(x => new EnumDataOutput
-               {
-                   Code = x.Key,
-                   Value = x.Value
-               }));
+        return fieldType.EnumToList();
     }
 }