From 27c2ed898c5c133bda08847ff234e4f1e015a442 Mon Sep 17 00:00:00 2001 From: geht <2947093423@qq.com> Date: Wed, 20 May 2026 12:29:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=BC=E5=AE=B9=E6=97=A7?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E6=A1=8C=E9=9D=A2=E7=AB=AF=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=85=8D=E7=BD=AE=E9=A1=B9=EF=BC=8C=E7=A1=AE?= =?UTF-8?q?=E4=BF=9D=E5=9C=A8=E7=BC=BA=E5=A4=B1=E6=97=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E7=9B=B8=E5=85=B3=20sys=5Fconfig=20=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../YY.Admin.Core/SqlSugar/SqlSugarSetup.cs | 56 +++++++++++++++++++ .../Service/Config/SysConfigService.cs | 24 +++++++- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/yy-admin-master/YY.Admin.Core/SqlSugar/SqlSugarSetup.cs b/yy-admin-master/YY.Admin.Core/SqlSugar/SqlSugarSetup.cs index e615330..57f85f4 100644 --- a/yy-admin-master/YY.Admin.Core/SqlSugar/SqlSugarSetup.cs +++ b/yy-admin-master/YY.Admin.Core/SqlSugar/SqlSugarSetup.cs @@ -18,6 +18,7 @@ using System.Text; using System.Threading.Tasks; using Yitter.IdGenerator; using YY.Admin.Core; +using YY.Admin.Core.Const; using YY.Admin.Core.Extension; using YY.Admin.Core.Option; using YY.Admin.Core.SeedData; @@ -259,6 +260,8 @@ namespace YY.Admin.Core.SqlSugar EnsureJeecgSysUserMirrorTable(dbProvider, config); // 兜底:确保 Jeecg 数据字典同构表存在(数据字典页面“同步数据字典”写入此表) EnsureJeecgSysDictItemMirrorTable(dbProvider, config); + // 兼容旧库:补齐桌面端登录设置相关 sys_config 项 + EnsureDesktopLoginConfigSeed(dbProvider, config); //// 初始化视图 //if (config.DbSettings.EnableInitView) InitView(dbProvider); // 初始化种子数据 @@ -389,6 +392,59 @@ namespace YY.Admin.Core.SqlSugar } } + /// + /// 兼容旧库:补齐桌面端「登录设置」所需的 sys_config 配置项(升级前库可能缺少这些 code) + /// + private static void EnsureDesktopLoginConfigSeed(SqlSugarScopeProvider dbProvider, DbConnectionConfig config) + { + try + { + var tableName = dbProvider.EntityMaintenance.GetEntityInfo(typeof(SysConfig)).DbTableName; + if (!dbProvider.DbMaintenance.IsAnyTable(tableName, false)) + { + return; + } + + var loginConfigCodes = new HashSet(StringComparer.OrdinalIgnoreCase) + { + ConfigConst.SysTokenExpire, + ConfigConst.SysRefreshTokenExpire, + ConfigConst.SysTokenIdleExtendMinutes, + ConfigConst.SysTokenCheckIntervalMinutes, + ConfigConst.SysTokenNeverExpire, + }; + + var seedRows = new SysConfigSeedData().HasData() + .Where(c => !string.IsNullOrWhiteSpace(c.Code) && loginConfigCodes.Contains(c.Code)) + .ToList(); + if (seedRows.Count == 0) + { + return; + } + + var existingCodes = dbProvider.Queryable() + .Where(c => loginConfigCodes.Contains(c.Code)) + .Select(c => c.Code) + .ToList() + .Where(c => !string.IsNullOrWhiteSpace(c)) + .ToHashSet(StringComparer.OrdinalIgnoreCase); + + var missing = seedRows + .Where(s => !existingCodes.Contains(s.Code!)) + .ToList(); + if (missing.Count == 0) + { + return; + } + + dbProvider.Insertable(missing).ExecuteCommand(); + } + catch + { + // 无权限、从库只读等场景不阻断启动 + } + } + /// /// 若 sys_menu 缺少桌面默认首页标记列,则 ALTER 补齐(与实体 SysMenu.IsDefaultDesktopHome 一致) /// diff --git a/yy-admin-master/YY.Admin.Services/Service/Config/SysConfigService.cs b/yy-admin-master/YY.Admin.Services/Service/Config/SysConfigService.cs index dfc1d05..3138822 100644 --- a/yy-admin-master/YY.Admin.Services/Service/Config/SysConfigService.cs +++ b/yy-admin-master/YY.Admin.Services/Service/Config/SysConfigService.cs @@ -1,6 +1,7 @@ using SqlSugar; using YY.Admin.Core; using YY.Admin.Core.Const; +using YY.Admin.Core.SeedData; namespace YY.Admin.Services.Service.Config { @@ -41,7 +42,28 @@ namespace YY.Admin.Services.Service.Config .ExecuteCommandAsync(); if (n <= 0) - return (false, "未找到对应配置项或无需更新"); + { + // 旧库可能缺少新增配置项,按种子模板补插后再写入 + var seed = new SysConfigSeedData().HasData() + .FirstOrDefault(c => string.Equals(c.Code, code, StringComparison.OrdinalIgnoreCase)); + if (seed == null) + return (false, "未找到对应配置项或无需更新"); + + var row = new SysConfig + { + Id = seed.Id, + Name = seed.Name, + Code = seed.Code, + Value = value, + SysFlag = seed.SysFlag, + GroupCode = seed.GroupCode, + OrderNo = seed.OrderNo, + Remark = seed.Remark, + CreateTime = DateTime.Now, + UpdateTime = DateTime.Now, + }; + await _dbContext.Insertable(row).ExecuteCommandAsync(); + } _sysCacheService.Remove($"{CacheConst.KeyConfig}{code}"); return (true, "保存成功");