优化桌面端无用菜单和地磅数据可手动功能。

This commit is contained in:
geht
2026-05-18 15:55:11 +08:00
parent 5800b6b61c
commit c11f3104cb
18 changed files with 628 additions and 118 deletions

View File

@@ -4,6 +4,6 @@ namespace YY.Admin.Core.Services;
public interface IWarehouseService
{
/// <summary>获取全部仓库列表(在线时拉取远端并刷新缓存,离线时返回本地缓存</summary>
/// <summary>获取全部仓库列表(优先内存/磁盘缓存;仅缓存为空且在线时拉取远端)</summary>
Task<List<MesXslWarehouse>> GetAllAsync(CancellationToken ct = default);
}

View File

@@ -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>

View File

@@ -16,7 +16,7 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
return new[]
{
new SysMenu{ Id=1300100000101, Pid=0, Title="工作台", Path="", Name="dashboard", Component="Layout", Icon="&#xe801;", 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="&#xe79e;", 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="&#xe79e;", 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="&#xe7fc;", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=101 },
// 建议此处Id范围之间放置具体业务应用菜单

View File

@@ -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