优化桌面端无用菜单和地磅数据可手动功能。
This commit is contained in:
@@ -4,6 +4,6 @@ namespace YY.Admin.Core.Services;
|
||||
|
||||
public interface IWarehouseService
|
||||
{
|
||||
/// <summary>获取全部仓库列表(在线时拉取远端并刷新缓存,离线时返回本地缓存)</summary>
|
||||
/// <summary>获取全部仓库列表(优先内存/磁盘缓存;仅缓存为空且在线时拉取远端)</summary>
|
||||
Task<List<MesXslWarehouse>> GetAllAsync(CancellationToken ct = default);
|
||||
}
|
||||
|
||||
@@ -103,6 +103,12 @@ public partial class SysMenu : EntityBase
|
||||
[SugarColumn(ColumnDescription = "是否固定")]
|
||||
public bool IsAffix { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 桌面端登录后默认打开的首页(全库仅一项建议为 true,保存时由服务层互斥)
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "桌面端默认首页")]
|
||||
public bool IsDefaultDesktopHome { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序
|
||||
/// </summary>
|
||||
|
||||
@@ -16,7 +16,7 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
|
||||
return new[]
|
||||
{
|
||||
new SysMenu{ Id=1300100000101, Pid=0, Title="工作台", Path="", Name="dashboard", Component="Layout", Icon="", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=0 },
|
||||
new SysMenu{ Id=1300100010101, Pid=1300100000101, Title="仪表盘", Path="DashboardView", Name="home", Component="/home/index", IsAffix=true, Icon="", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1300100010101, Pid=1300100000101, Title="仪表盘", Path="DashboardView", Name="home", Component="/home/index", IsAffix=true, IsDefaultDesktopHome=true, Icon="", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1300100010201, Pid=1300100000101, Title="站内信", Path="/dashboard/notice", Name="notice", Component="/home/notice/index", Icon="", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=101 },
|
||||
|
||||
// 建议此处Id范围之间放置具体业务应用菜单
|
||||
|
||||
@@ -251,6 +251,8 @@ namespace YY.Admin.Core.SqlSugar
|
||||
|
||||
// 兼容旧库:曾关闭表初始化或升级前库无 Jeecg 盐列时补齐,避免脱网按 Jeecg 规则验密时读列失败
|
||||
EnsureSysUserJeecgPasswordSaltColumn(dbProvider, config);
|
||||
// 兼容旧库:菜单表增加「桌面默认首页」标记列
|
||||
EnsureSysMenuDefaultDesktopHomeColumn(dbProvider, config);
|
||||
// 兜底:确保 Jeecg 用户同构表存在(登录页“同步 Jeecg 用户”写入此表)
|
||||
EnsureJeecgSysUserMirrorTable(dbProvider, config);
|
||||
// 兜底:确保 Jeecg 数据字典同构表存在(数据字典页面“同步数据字典”写入此表)
|
||||
@@ -352,8 +354,57 @@ namespace YY.Admin.Core.SqlSugar
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 若 sys_user 缺少 jeecg_password_salt,则执行 ALTER 补列(与实体 SysUser.JeecgPasswordSalt 一致)
|
||||
/// 若 sys_menu 缺少桌面默认首页标记列,则 ALTER 补齐(与实体 SysMenu.IsDefaultDesktopHome 一致)
|
||||
/// </summary>
|
||||
private static void EnsureSysMenuDefaultDesktopHomeColumn(SqlSugarScopeProvider dbProvider, DbConnectionConfig config)
|
||||
{
|
||||
try
|
||||
{
|
||||
var entityInfo = dbProvider.EntityMaintenance.GetEntityInfo(typeof(SysMenu));
|
||||
var tableName = entityInfo.DbTableName;
|
||||
if (!dbProvider.DbMaintenance.IsAnyTable(tableName, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var col = entityInfo.Columns.FirstOrDefault(c => c.PropertyName == nameof(SysMenu.IsDefaultDesktopHome));
|
||||
if (col == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var columns = dbProvider.DbMaintenance.GetColumnInfosByTableName(tableName, false);
|
||||
if (columns != null &&
|
||||
columns.Any(c => string.Equals(c.DbColumnName, col.DbColumnName, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var cName = col.DbColumnName;
|
||||
var sql = config.DbType switch
|
||||
{
|
||||
DbType.Sqlite => $"ALTER TABLE {tableName} ADD COLUMN {cName} INTEGER NOT NULL DEFAULT 0;",
|
||||
DbType.MySql => $"ALTER TABLE `{tableName}` ADD COLUMN `{cName}` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '桌面端默认首页';",
|
||||
DbType.PostgreSQL => $"ALTER TABLE \"{tableName}\" ADD COLUMN IF NOT EXISTS {cName} BOOLEAN NOT NULL DEFAULT FALSE;",
|
||||
DbType.SqlServer => $"ALTER TABLE [{tableName}] ADD [{cName}] BIT NOT NULL DEFAULT 0;",
|
||||
DbType.Kdbndp => $"ALTER TABLE \"{tableName}\" ADD COLUMN IF NOT EXISTS {cName} BOOLEAN NOT NULL DEFAULT FALSE;",
|
||||
DbType.Dm => $"ALTER TABLE {tableName} ADD {cName} NUMBER(1) DEFAULT 0 NOT NULL;",
|
||||
_ => (string?)null
|
||||
};
|
||||
|
||||
if (string.IsNullOrEmpty(sql))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Retry(() => dbProvider.Ado.ExecuteCommand(sql), maxRetry: 3, retryIntervalMs: 1000);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// 无权限、从库只读等场景不阻断启动
|
||||
}
|
||||
}
|
||||
|
||||
private static void EnsureSysUserJeecgPasswordSaltColumn(SqlSugarScopeProvider dbProvider, DbConnectionConfig config)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user