diff --git a/Admin.NET/Admin.NET.Core/Job/LogJob.cs b/Admin.NET/Admin.NET.Core/Job/LogJob.cs index 0f766e95..1ab23370 100644 --- a/Admin.NET/Admin.NET.Core/Job/LogJob.cs +++ b/Admin.NET/Admin.NET.Core/Job/LogJob.cs @@ -26,15 +26,13 @@ public class LogJob : IJob { using var serviceScope = _scopeFactory.CreateScope(); - var logVisRep = serviceScope.ServiceProvider.GetRequiredService>(); - var logOpRep = serviceScope.ServiceProvider.GetRequiredService>(); - var logDiffRep = serviceScope.ServiceProvider.GetRequiredService>(); + var db = serviceScope.ServiceProvider.GetRequiredService().CopyNew(); var sysConfigService = serviceScope.ServiceProvider.GetRequiredService(); var daysAgo = await sysConfigService.GetConfigValue(ConfigConst.SysLogRetentionDays); // 日志保留天数 - await logVisRep.CopyNew().AsDeleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除访问日志 - await logOpRep.CopyNew().AsDeleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除操作日志 - await logDiffRep.CopyNew().AsDeleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除差异日志 + await db.Deleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除访问日志 + await db.Deleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除操作日志 + await db.Deleteable().Where(u => u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除差异日志 string msg = $"【{DateTime.Now}】清理系统日志成功,删除 {daysAgo} 天前的日志数据!"; var originColor = Console.ForegroundColor; @@ -44,5 +42,18 @@ public class LogJob : IJob // 自定义日志 _logger.LogInformation(msg); + + // 默认 3个月/90天 强制修改一次密码(将最新修改密码时间置空) + if (await sysConfigService.GetConfigValue(ConfigConst.SysForceChangePassword)) + { + var userIds = await db.Queryable() + .Where(u => SqlFunc.IsNullOrEmpty(u.LastChangePasswordTime) || (DateTime.Now - (DateTime)u.LastChangePasswordTime).Days > 90) + .Select(u => u.Id).ToListAsync(stoppingToken); + + await db.Updateable() + .SetColumns(u => new SysUser() { LastChangePasswordTime = null }) + .Where(u => userIds.Contains(u.Id)) + .ExecuteCommandAsync(stoppingToken); + } } } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Job/OnlineUserJob.cs b/Admin.NET/Admin.NET.Core/Job/OnlineUserJob.cs index e33ad308..7e49e698 100644 --- a/Admin.NET/Admin.NET.Core/Job/OnlineUserJob.cs +++ b/Admin.NET/Admin.NET.Core/Job/OnlineUserJob.cs @@ -28,8 +28,8 @@ public class OnlineUserJob : IJob { using var serviceScope = _scopeFactory.CreateScope(); - var rep = serviceScope.ServiceProvider.GetRequiredService>(); - await rep.CopyNew().AsDeleteable().ExecuteCommandAsync(stoppingToken); + var db = serviceScope.ServiceProvider.GetRequiredService().CopyNew(); + await db.Deleteable().ExecuteCommandAsync(stoppingToken); string msg = $"【{DateTime.Now}】清理在线用户成功!服务已重启..."; var originColor = Console.ForegroundColor;