diff --git a/Src/Dlhis.ScheduledTask/Jobs/RemoveFacePictureAfterResignedJob.cs b/Src/Dlhis.ScheduledTask/Jobs/RemoveFacePictureAfterResignedJob.cs new file mode 100644 index 00000000..d13fd996 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/Jobs/RemoveFacePictureAfterResignedJob.cs @@ -0,0 +1,38 @@ +using Dlhis.Entity.Basic.Entity; +using Dlhis.ScheduledTask.Attributes; +using SqlSugar; + +namespace Dlhis.ScheduledTask.Jobs; + +[RecurringJob(nameof(RemoveFacePictureAfterResignedJob), "0 0 1 * * ? ", Name = "移除7天内离职人员face图片")] +public class RemoveFacePictureAfterResignedJob : BaseJob +{ + public RemoveFacePictureAfterResignedJob(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + protected override async Task RunAsync(IServiceProvider serviceProvider) + { + var start = new DateTime(2024, 1, 1); + var now = DateTime.Now.AddDays(-7).Date; + + var leaveUserCodes = await DbContext.Queryable() + .Where(x => SqlFunc.Subqueryable().Where(p => p.Code == x.Code).NotAny()) + .Where(x => !string.IsNullOrEmpty(x.No) + && x.ResignationDate.HasValue + && x.ResignationDate >= start + && x.ResignationDate < now + ) + .Select(x => x.Code) + .Distinct() + .ToListAsync(); + + var faceDbContext = DbContext.ChangeDb("face"); + foreach (var leaveUserCode in leaveUserCodes.Chunk(10)) + { + await faceDbContext.Deleteable() + .Where(x => leaveUserCode.Contains(x.UserCode)) + .ExecuteCommandAsync(); + } + } +} \ No newline at end of file