Просмотр исходного кода

chore: 增加同步枚举转字典旧数据逻辑,后期可删除

喵你个旺呀 1 год назад
Родитель
Сommit
972d5c18a3
1 измененных файлов с 27 добавлено и 0 удалено
  1. 27 0
      Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs

+ 27 - 0
Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs

@@ -42,6 +42,8 @@ public class EnumToDictJob : IJob
             Console.WriteLine($"【{DateTime.Now}】系统枚举转换字典的枚举类名称必须以Enum结尾: {dictType.Code} ({dictType.Name})");
         sysDictTypeList = sysDictTypeList.Where(x => x.Code.EndsWith("Enum")).ToList();
 
+        await SyncEnumToDictInfoAsync(db, sysDictTypeList);
+        
         Console.ForegroundColor = ConsoleColor.Yellow;
         try
         {
@@ -80,6 +82,31 @@ public class EnumToDictJob : IJob
         }
     }
 
+    /// <summary>
+    /// 用于同步枚举转字典旧数据, 后期可删除
+    /// </summary>
+    /// <param name="db"></param>
+    /// <param name="list"></param>
+    [Obsolete]
+    private async Task SyncEnumToDictInfoAsync(SqlSugarClient db, List<SysDictType> list)
+    {
+        var codeList = list.Select(x => x.Code).ToList();
+        foreach (var dbDictType in await db.Queryable<SysDictType>().Where(x => codeList.Contains(x.Code)).ToListAsync() ?? new())
+        {
+            var enumDictType = list.First(x => x.Code == dbDictType.Code);
+            enumDictType.Children?.ForEach(e => e.DictTypeId = dbDictType.Id);
+
+            // 数据不一致则删除
+            if (enumDictType.Id != dbDictType.Id)
+            {
+                _ = db.Deleteable<SysDictData>().Where(x => x.DictTypeId == dbDictType.Id).ExecuteCommandAsync();
+                _ = db.Deleteable<SysDictType>().Where(x => x.Id == dbDictType.Id).ExecuteCommandAsync();
+            }
+            
+            enumDictType.Id = dbDictType.Id;
+        }
+    }
+
     /// <summary>
     /// 枚举信息转字典
     /// </summary>