新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
using HandyControl.Controls;
|
||||
using Prism.Commands;
|
||||
using Prism.Ioc;
|
||||
using YY.Admin.Core.Const;
|
||||
using YY.Admin.Services.Service.Config;
|
||||
|
||||
namespace YY.Admin.ViewModels.SysManage;
|
||||
|
||||
/// <summary>
|
||||
/// 登录与会话相关系统配置
|
||||
/// </summary>
|
||||
public class LoginSettingsViewModel : BaseViewModel
|
||||
{
|
||||
private readonly ISysConfigService _configService;
|
||||
|
||||
private int _tokenExpireMinutes = 30;
|
||||
public int TokenExpireMinutes
|
||||
{
|
||||
get => _tokenExpireMinutes;
|
||||
set => SetProperty(ref _tokenExpireMinutes, value);
|
||||
}
|
||||
|
||||
private int _refreshTokenExpireMinutes = 20160;
|
||||
public int RefreshTokenExpireMinutes
|
||||
{
|
||||
get => _refreshTokenExpireMinutes;
|
||||
set => SetProperty(ref _refreshTokenExpireMinutes, value);
|
||||
}
|
||||
|
||||
private int _idleExtendMinutes = 20;
|
||||
public int IdleExtendMinutes
|
||||
{
|
||||
get => _idleExtendMinutes;
|
||||
set => SetProperty(ref _idleExtendMinutes, value);
|
||||
}
|
||||
|
||||
private int _checkIntervalMinutes = 1;
|
||||
public int CheckIntervalMinutes
|
||||
{
|
||||
get => _checkIntervalMinutes;
|
||||
set => SetProperty(ref _checkIntervalMinutes, value);
|
||||
}
|
||||
|
||||
private bool _neverExpire;
|
||||
public bool NeverExpire
|
||||
{
|
||||
get => _neverExpire;
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _neverExpire, value))
|
||||
RaisePropertyChanged(nameof(IsConfigEditable));
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsConfigEditable => !NeverExpire;
|
||||
|
||||
public DelegateCommand LoadCommand { get; }
|
||||
public DelegateCommand SaveCommand { get; }
|
||||
|
||||
public LoginSettingsViewModel(
|
||||
ISysConfigService configService,
|
||||
IContainerExtension container,
|
||||
IRegionManager regionManager) : base(container, regionManager)
|
||||
{
|
||||
_configService = configService;
|
||||
LoadCommand = new DelegateCommand(async () => await LoadAsync());
|
||||
SaveCommand = new DelegateCommand(async () => await SaveAsync());
|
||||
_ = LoadAsync();
|
||||
}
|
||||
|
||||
private async Task LoadAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
IsLoading = true;
|
||||
var t = await _configService.GetConfigValue<int>(ConfigConst.SysTokenExpire);
|
||||
TokenExpireMinutes = t > 0 ? t : 30;
|
||||
|
||||
var r = await _configService.GetConfigValue<int>(ConfigConst.SysRefreshTokenExpire);
|
||||
RefreshTokenExpireMinutes = r > 0 ? r : 20160;
|
||||
|
||||
var i = await _configService.GetConfigValue<int>(ConfigConst.SysTokenIdleExtendMinutes);
|
||||
IdleExtendMinutes = i > 0 ? i : 20;
|
||||
|
||||
var c = await _configService.GetConfigValue<int>(ConfigConst.SysTokenCheckIntervalMinutes);
|
||||
CheckIntervalMinutes = c > 0 ? c : 1;
|
||||
|
||||
NeverExpire = await _configService.GetConfigValue<bool>(ConfigConst.SysTokenNeverExpire);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error($"加载配置失败:{ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
IsLoading = false;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SaveAsync()
|
||||
{
|
||||
if (!NeverExpire && (TokenExpireMinutes < 5 || TokenExpireMinutes > 43200))
|
||||
{
|
||||
Growl.Warning("Token 过期时间建议在 5~43200 分钟之间");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NeverExpire && (IdleExtendMinutes < 1 || IdleExtendMinutes > 1440))
|
||||
{
|
||||
Growl.Warning("会话续期阈值建议在 1~1440 分钟之间");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NeverExpire && IdleExtendMinutes > TokenExpireMinutes)
|
||||
{
|
||||
Growl.Warning("续期阈值不应大于 Token 过期时间");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NeverExpire && (CheckIntervalMinutes < 1 || CheckIntervalMinutes > 120))
|
||||
{
|
||||
Growl.Warning("登录状态检查间隔建议在 1~120 分钟之间");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NeverExpire && RefreshTokenExpireMinutes < TokenExpireMinutes * 2)
|
||||
{
|
||||
Growl.Warning("RefreshToken 过期时间建议不小于 Token 过期时间的 2 倍");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
IsLoading = true;
|
||||
var pairs = new[]
|
||||
{
|
||||
(ConfigConst.SysTokenExpire, TokenExpireMinutes.ToString()),
|
||||
(ConfigConst.SysRefreshTokenExpire, RefreshTokenExpireMinutes.ToString()),
|
||||
(ConfigConst.SysTokenIdleExtendMinutes, IdleExtendMinutes.ToString()),
|
||||
(ConfigConst.SysTokenCheckIntervalMinutes, CheckIntervalMinutes.ToString()),
|
||||
(ConfigConst.SysTokenNeverExpire, NeverExpire.ToString()),
|
||||
};
|
||||
|
||||
foreach (var (code, val) in pairs)
|
||||
{
|
||||
var (ok, msg) = await _configService.SetConfigValueAsync(code, val);
|
||||
if (!ok)
|
||||
{
|
||||
Growl.Warning($"{code}:{msg}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Growl.Success("登录相关配置已保存");
|
||||
BaseViewModel.RefreshTokenCheckIntervalFromConfig();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error($"保存失败:{ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
IsLoading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user