فهرست منبع

fix: 解决不同程序集下存在同名枚举类的问题

喵你个旺呀 1 سال پیش
والد
کامیت
b3de9f3058
2فایلهای تغییر یافته به همراه4 افزوده شده و 6 حذف شده
  1. 2 2
      Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs
  2. 2 4
      Admin.NET/Admin.NET.Core/Service/Enum/SysEnumService.cs

+ 2 - 2
Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs

@@ -124,10 +124,10 @@ public class EnumToDictJob : IJob
         {
             var dictType = new SysDictType
             {
-                Id = 900000000000 + CommonUtil.GetFixedHashCode(type.TypeName),
+                Id = 900000000000 + CommonUtil.GetFixedHashCode(type.TypeFullName),
                 Code = type.TypeName,
                 Name = type.TypeDescribe,
-                Remark = type.TypeRemark,
+                Remark = type.TypeFullName,
                 TenantId = SqlSugarConst.DefaultTenantId
             };
             dictType.Children = type.EnumEntities.Select(x => new SysDictData

+ 2 - 4
Admin.NET/Admin.NET.Core/Service/Enum/SysEnumService.cs

@@ -32,14 +32,12 @@ public class SysEnumService : IDynamicApiController, ITransient
             .OrderBy(u => u.Name).ThenBy(u => u.FullName)
             .ToList();
 
-        // 如果存在同名枚举类,则依次增加 "_序号" 
+        // 如果存在同名枚举类,则依次增加 "_序号" 
         var list = enumTypeList.Select(GetEnumDescription).ToList();
-        var appEnumList = list.Where(u => !u.TypeFullName.StartsWith(typeof(AccountTypeEnum).Namespace!));
         foreach (var enumType in list.GroupBy(u => u.TypeName).Where(g => g.Count() > 1))
         {
             int i = 1;
-            // 过滤框架中的枚举
-            foreach (var item in appEnumList.Where(u => u.TypeName == enumType.Key)) item.TypeName = $"{i++}_{item.TypeName}";
+            foreach (var item in list.Where(u => u.TypeName == enumType.Key).Skip(1)) item.TypeName = $"{item.TypeName}_{i++}";
         }
         return list;
     }