完善 MCS 桌面代理与开炼机动作同步,修复原料相关菜单权限,桌面端新增上辅机 MES 菜单。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -110,33 +110,69 @@ namespace YY.Admin.ViewModels
|
||||
_tokenCheckTimer.Interval = TimeSpan.FromMinutes(minutes);
|
||||
}
|
||||
|
||||
/// <summary>登录永不过期缓存,避免定时器在 UI 线程同步读库失败后回落到 30 分钟过期。</summary>
|
||||
private static bool? _tokenNeverExpireCached;
|
||||
|
||||
/// <summary>
|
||||
/// 是否开启登录永不过期
|
||||
/// </summary>
|
||||
private static bool IsTokenNeverExpireEnabled()
|
||||
{
|
||||
if (_tokenNeverExpireCached.HasValue)
|
||||
return _tokenNeverExpireCached.Value;
|
||||
|
||||
try
|
||||
{
|
||||
var cfg = Prism.Ioc.ContainerLocator.Current.Resolve<ISysConfigService>();
|
||||
return cfg.GetConfigValue<bool>(ConfigConst.SysTokenNeverExpire).GetAwaiter().GetResult();
|
||||
// 用 string 读取再解析,避免 Convert.ChangeType(bool) 异常被吞掉后误判为未开启
|
||||
var raw = cfg.GetConfigValue<string>(ConfigConst.SysTokenNeverExpire).GetAwaiter().GetResult();
|
||||
var enabled = ParseNeverExpireFlag(raw);
|
||||
_tokenNeverExpireCached = enabled;
|
||||
return enabled;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
// 读配置失败时按「永不过期」处理,避免误踢回登录页
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool ParseNeverExpireFlag(string? raw)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(raw))
|
||||
return true;
|
||||
if (bool.TryParse(raw, out var b))
|
||||
return b;
|
||||
return raw.Trim() is "1" or "Y" or "y" or "yes" or "YES" or "on" or "ON";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录设置保存后刷新检查间隔(已启动定时器时立即生效)
|
||||
/// 登录设置保存后刷新检查间隔 / 永不过期策略(已启动定时器时立即生效)
|
||||
/// </summary>
|
||||
public static void RefreshTokenCheckIntervalFromConfig()
|
||||
{
|
||||
_tokenNeverExpireCached = null;
|
||||
if (IsTokenNeverExpireEnabled())
|
||||
{
|
||||
StopTokenCheckTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
ApplyTokenCheckIntervalFromConfig();
|
||||
if (_tokenCheckTimer != null && !_tokenCheckTimer.IsEnabled && UserContext?.Token != null)
|
||||
_tokenCheckTimer.Start();
|
||||
}
|
||||
|
||||
// 启动定时器的方法
|
||||
public static void StartTokenCheckTimer()
|
||||
{
|
||||
_tokenNeverExpireCached = null;
|
||||
if (IsTokenNeverExpireEnabled())
|
||||
{
|
||||
StopTokenCheckTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_tokenCheckTimer == null)
|
||||
{
|
||||
_tokenCheckTimer = new DispatcherTimer();
|
||||
|
||||
Reference in New Issue
Block a user