添加兼容旧库的桌面端登录设置配置项,确保在缺失时自动补全相关 sys_config 项
This commit is contained in:
@@ -18,6 +18,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Yitter.IdGenerator;
|
using Yitter.IdGenerator;
|
||||||
using YY.Admin.Core;
|
using YY.Admin.Core;
|
||||||
|
using YY.Admin.Core.Const;
|
||||||
using YY.Admin.Core.Extension;
|
using YY.Admin.Core.Extension;
|
||||||
using YY.Admin.Core.Option;
|
using YY.Admin.Core.Option;
|
||||||
using YY.Admin.Core.SeedData;
|
using YY.Admin.Core.SeedData;
|
||||||
@@ -259,6 +260,8 @@ namespace YY.Admin.Core.SqlSugar
|
|||||||
EnsureJeecgSysUserMirrorTable(dbProvider, config);
|
EnsureJeecgSysUserMirrorTable(dbProvider, config);
|
||||||
// 兜底:确保 Jeecg 数据字典同构表存在(数据字典页面“同步数据字典”写入此表)
|
// 兜底:确保 Jeecg 数据字典同构表存在(数据字典页面“同步数据字典”写入此表)
|
||||||
EnsureJeecgSysDictItemMirrorTable(dbProvider, config);
|
EnsureJeecgSysDictItemMirrorTable(dbProvider, config);
|
||||||
|
// 兼容旧库:补齐桌面端登录设置相关 sys_config 项
|
||||||
|
EnsureDesktopLoginConfigSeed(dbProvider, config);
|
||||||
//// 初始化视图
|
//// 初始化视图
|
||||||
//if (config.DbSettings.EnableInitView) InitView(dbProvider);
|
//if (config.DbSettings.EnableInitView) InitView(dbProvider);
|
||||||
// 初始化种子数据
|
// 初始化种子数据
|
||||||
@@ -389,6 +392,59 @@ namespace YY.Admin.Core.SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 兼容旧库:补齐桌面端「登录设置」所需的 sys_config 配置项(升级前库可能缺少这些 code)
|
||||||
|
/// </summary>
|
||||||
|
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<string>(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<SysConfig>()
|
||||||
|
.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
|
||||||
|
{
|
||||||
|
// 无权限、从库只读等场景不阻断启动
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 若 sys_menu 缺少桌面默认首页标记列,则 ALTER 补齐(与实体 SysMenu.IsDefaultDesktopHome 一致)
|
/// 若 sys_menu 缺少桌面默认首页标记列,则 ALTER 补齐(与实体 SysMenu.IsDefaultDesktopHome 一致)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using YY.Admin.Core;
|
using YY.Admin.Core;
|
||||||
using YY.Admin.Core.Const;
|
using YY.Admin.Core.Const;
|
||||||
|
using YY.Admin.Core.SeedData;
|
||||||
|
|
||||||
namespace YY.Admin.Services.Service.Config
|
namespace YY.Admin.Services.Service.Config
|
||||||
{
|
{
|
||||||
@@ -41,7 +42,28 @@ namespace YY.Admin.Services.Service.Config
|
|||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
if (n <= 0)
|
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}");
|
_sysCacheService.Remove($"{CacheConst.KeyConfig}{code}");
|
||||||
return (true, "保存成功");
|
return (true, "保存成功");
|
||||||
|
|||||||
Reference in New Issue
Block a user