From a0c0b11b134fa81ac132ed6aeb139b271d01ad64 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 23 Oct 2025 11:24:54 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E7=A7=BB=E9=99=A47=E5=A4=A9=E5=86=85?= =?UTF-8?q?=E7=A6=BB=E8=81=8C=E4=BA=BA=E5=91=98face=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jobs/RemoveFacePictureAfterResignedJob.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Src/Dlhis.ScheduledTask/Jobs/RemoveFacePictureAfterResignedJob.cs 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