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, "保存成功");