Sfoglia il codice sorgente

!1519 修复部分已知bug
Merge pull request !1519 from 喵你个汪/next

zuohuaijun 1 anno fa
parent
commit
b200d5ab24

+ 38 - 10
Admin.NET/Admin.NET.Core/Job/EnumToDictJob.cs

@@ -27,9 +27,8 @@ public class EnumToDictJob : IJob
     public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
     {
         var originColor = Console.ForegroundColor;
-        Console.ForegroundColor = ConsoleColor.Green;
+        Console.ForegroundColor = ConsoleColor.Yellow;
         Console.WriteLine($"【{DateTime.Now}】系统枚举转换字典");
-        Console.ForegroundColor = originColor;
         
         using var serviceScope = _scopeFactory.CreateScope();
         var db = serviceScope.ServiceProvider.GetRequiredService<ISqlSugarClient>().CopyNew();
@@ -38,31 +37,35 @@ public class EnumToDictJob : IJob
         var sysDictTypeList = GetDictByEnumType(sysEnumService.GetEnumTypeList());
 
         // 校验枚举类命名规范,字典相关功能中需要通过后缀判断是否为枚举类型
-        foreach (var dictType in sysDictTypeList.Where(x => !x.Code.EndsWith("Enum"))) Log.Warning($"系统枚举转换字典的枚举类名称必须以Enum结尾: {dictType.Code} ({dictType.Name})");
+        Console.ForegroundColor = ConsoleColor.Red;
+        foreach (var dictType in sysDictTypeList.Where(x => !x.Code.EndsWith("Enum")))
+            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
         {
             await db.BeginTranAsync();
             var storageable1 = await db.Storageable(sysDictTypeList)
-                .WhereColumns(it => new { it.Code })
-                .SplitInsert(it => !it.Any())
                 .SplitUpdate(it => it.Any())
+                .SplitInsert(_ => true)
                 .ToStorageAsync();
             await storageable1.BulkCopyAsync();
             await storageable1.BulkUpdateAsync();
             
-            Log.Information($"系统枚举类转字典类型数据: 共{storageable1.TotalList.Count}条");
-        
+            Console.WriteLine($"【{DateTime.Now}】系统枚举类转字典类型数据: 插入{storageable1.InsertList.Count}条, 更新{storageable1.UpdateList.Count}条, 共{storageable1.TotalList.Count}条。");
+
             var storageable2 = await db.Storageable(sysDictTypeList.SelectMany(x => x.Children).ToList())
                 .WhereColumns(it => new { it.DictTypeId, it.Code })
-                .SplitInsert(it => !it.Any())
                 .SplitUpdate(it => it.Any())
+                .SplitInsert(_ => true)
                 .ToStorageAsync();
             await storageable2.BulkCopyAsync();
             await storageable2.BulkUpdateAsync();
-            
-            Log.Information($"系统枚举项转字典值数据: 共{storageable2.TotalList.Count}条");
+
+            Console.WriteLine($"【{DateTime.Now}】系统枚举项转字典值数据: 插入{storageable2.InsertList.Count}条, 更新{storageable2.UpdateList.Count}条, 共{storageable2.TotalList.Count}条。");
 
             await db.CommitTranAsync();
         }
@@ -72,6 +75,31 @@ public class EnumToDictJob : IJob
             Log.Error($"系统枚举转换字典操作错误:{error.Message}\n堆栈跟踪:{error.StackTrace}", error);
             throw;
         }
+        finally
+        {
+            Console.ForegroundColor = originColor;
+        }
+    }
+
+    /// <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);
+            if (enumDictType.Id == dbDictType.Id) continue;
+            
+            // 数据不一致则删除
+            _ = db.Deleteable<SysDictData>().Where(x => x.DictTypeId == dbDictType.Id).ExecuteCommandAsync();
+            _ = db.Deleteable<SysDictType>().Where(x => x.Id == dbDictType.Id).ExecuteCommandAsync();
+            Console.WriteLine($"【{DateTime.Now}】删除字典数据: {dbDictType.Name}-{dbDictType.Code}");
+        }
     }
 
     /// <summary>

+ 6 - 6
Admin.NET/Admin.NET.Core/SeedData/SysDictDataSeedData.cs

@@ -59,12 +59,12 @@ public class SysDictDataSeedData : ISqlSugarEntitySeedData<SysDictData>
             new SysDictData{ Id=1300000000405, DictTypeId=1300000000104, Value="生成到本项目(前端)", Code="211", OrderNo=5, Remark="生成到本项目(前端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
             new SysDictData{ Id=1300000000406, DictTypeId=1300000000104, Value="生成到本项目(后端)", Code="221", OrderNo=6, Remark="生成到本项目(后端)", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
 
-            new SysDictData{ Id=1300000000501, DictTypeId=1300000000105, Value="EntityBaseId【基础实体Id】", Code="EntityBaseId", OrderNo=1, Remark="【基础实体Id】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
-            new SysDictData{ Id=1300000000502, DictTypeId=1300000000105, Value="EntityBase【基础实体】", Code="EntityBase", OrderNo=1, Remark="【基础实体】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
-            new SysDictData{ Id=1300000000503, DictTypeId=1300000000105, Value="EntityTenantId【租户实体Id】", Code="EntityTenantId", OrderNo=1, Remark="【租户实体Id】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
-            new SysDictData{ Id=1300000000504, DictTypeId=1300000000105, Value="EntityTenant【租户实体】", Code="EntityTenant", OrderNo=1, Remark="【租户实体】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
-            new SysDictData{ Id=1300000000505, DictTypeId=1300000000105, Value="EntityBaseData【业务实体】", Code="EntityBaseData", OrderNo=1, Remark="【业务实体】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
-            new SysDictData{ Id=1300000000506, DictTypeId=1300000000105, Value="EntityTenantBaseData【租户业务实体】", Code="EntityTenantBaseData", OrderNo=1, Remark="【租户业务实体】", Status=StatusEnum.Disable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000501, DictTypeId=1300000000105, Value="EntityBaseId【基础实体Id】", Code="EntityBaseId", OrderNo=1, Remark="【基础实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000502, DictTypeId=1300000000105, Value="EntityBase【基础实体】", Code="EntityBase", OrderNo=1, Remark="【基础实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000503, DictTypeId=1300000000105, Value="EntityTenantId【租户实体Id】", Code="EntityTenantId", OrderNo=1, Remark="【租户实体Id】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000504, DictTypeId=1300000000105, Value="EntityTenant【租户实体】", Code="EntityTenant", OrderNo=1, Remark="【租户实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000505, DictTypeId=1300000000105, Value="EntityBaseData【业务实体】", Code="EntityBaseData", OrderNo=1, Remark="【业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
+            new SysDictData{ Id=1300000000506, DictTypeId=1300000000105, Value="EntityTenantBaseData【租户业务实体】", Code="EntityTenantBaseData", OrderNo=1, Remark="【租户业务实体】", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
 
             new SysDictData{ Id=1300000000601, DictTypeId=1300000000106, Value="不需要", Code="off", OrderNo=100, Remark="不需要打印支持", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },
             new SysDictData{ Id=1300000000602, DictTypeId=1300000000106, Value="绑定打印模版", Code="custom", OrderNo=101, Remark="绑定打印模版", Status=StatusEnum.Enable, CreateTime=DateTime.Parse("2023-12-04 00:00:00") },

+ 1 - 1
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarFilter.cs

@@ -40,7 +40,7 @@ public static class SqlSugarFilter
     public static void DeleteCustomCache(long userId, string dbConfigId)
     {
         // 删除自定义缓存——过滤器
-        _cache.Remove($"db:{dbConfigId}:custom:{userId}");
+        Cache.Remove($"db:{dbConfigId}:custom:{userId}");
     }
 
     /// <summary>

+ 1 - 4
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -356,10 +356,7 @@ public static class SqlSugarSetup
         }
 
         // 初始化种子数据
-        if (config.SeedSettings.EnableInitSeed)
-        {
-            
-        }
+        if (config.SeedSettings.EnableInitSeed) InitSeedData(db, config);
     }
 
     /// <summary>

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Entity/GoViewPro.cs

@@ -24,7 +24,7 @@ public class GoViewPro : EntityTenant
     /// 项目状态
     /// </summary>
     [SugarColumn(ColumnDescription = "项目状态")]
-    public GoViewProState State { get; set; } = GoViewProState.UnPublish;
+    public GoViewProStateEnum StateEnum { get; set; } = GoViewProStateEnum.UnPublish;
 
     /// <summary>
     /// 预览图片Url

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Enum/GoViewProState.cs → Admin.NET/Plugins/Admin.NET.Plugin.GoView/Enum/GoViewProStateEnum.cs

@@ -10,7 +10,7 @@ namespace Admin.NET.Plugin.GoView;
 /// GoView 项目状态
 /// </summary>
 [Description("GoView 项目状态")]
-public enum GoViewProState
+public enum GoViewProStateEnum
 {
     /// <summary>
     /// 未发布

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewPro/Dto/GoViewProInput.cs

@@ -61,7 +61,7 @@ public class GoViewProPublishInput
     /// <summary>
     /// 项目状态
     /// </summary>
-    public GoViewProState State { get; set; }
+    public GoViewProStateEnum StateEnum { get; set; }
 }
 
 /// <summary>

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewPro/Dto/GoViewProOutput.cs

@@ -24,7 +24,7 @@ public class GoViewProItemOutput
     /// <summary>
     /// 项目状态
     /// </summary>
-    public GoViewProState State { get; set; }
+    public GoViewProStateEnum StateEnum { get; set; }
 
     /// <summary>
     /// 创建时间

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Service/GoViewPro/GoViewProService.cs

@@ -88,7 +88,7 @@ public class GoViewProService : IDynamicApiController
         await _goViewProRep.AsUpdateable()
             .SetColumns(u => new GoViewPro
             {
-                State = input.State
+                StateEnum = input.StateEnum
             })
             .Where(u => u.Id == input.Id)
             .ExecuteCommandAsync();

+ 5 - 2
Web/src/api/base/index.ts

@@ -1,11 +1,14 @@
 import { service, cancelRequest } from '/@/utils/request';
-import { AxiosRequestConfig } from "axios";
+import {AxiosRequestConfig, AxiosResponse} from "axios";
 
 // 接口基类
 export const useBaseApi = (module: string) => {
     const baseUrl = `/api/${module}/`;
     const request = <T>(config: AxiosRequestConfig<T>, cancel: boolean = false) => {
-        if (cancel) return cancelRequest(config.url || "");
+        if (cancel) {
+            cancelRequest(config.url || "");
+            return Promise.resolve({} as AxiosResponse<any, any>);
+        }
         return service(config);
     }
     return {