From 2f9c4520833c914e3678feddf5de47405d1ed5fd Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 10 Dec 2025 16:34:16 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=87=AA=E5=8A=A8=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=BE=8B=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevicePermissionManuallyController.cs | 1 + .../Jobs/RemoveManuallyDevicePermissionJob.cs | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 Src/Dlhis.ScheduledTask/Jobs/RemoveManuallyDevicePermissionJob.cs diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs index 1795014a..021705ed 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs @@ -59,6 +59,7 @@ public class DevicePermissionManuallyController : ControllerBase /// /// [HttpPost("batchDelete")] + [Transactional] public async Task DeleteAsync(List ids) { await _devicePermissionService.DeleteAsync(ids); diff --git a/Src/Dlhis.ScheduledTask/Jobs/RemoveManuallyDevicePermissionJob.cs b/Src/Dlhis.ScheduledTask/Jobs/RemoveManuallyDevicePermissionJob.cs new file mode 100644 index 00000000..a158a177 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/Jobs/RemoveManuallyDevicePermissionJob.cs @@ -0,0 +1,58 @@ +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Device.Entities; +using Dlhis.Entity.Device.Enums; +using Dlhis.ScheduledTask.Attributes; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; + +namespace Dlhis.ScheduledTask.Jobs; + +/// +/// 移除例外权限 +/// +[RecurringJob(nameof(RemoveManuallyDevicePermissionJob), "", Name = "移除例外权限")] +public class RemoveManuallyDevicePermissionJob : BaseJob +{ + public RemoveManuallyDevicePermissionJob(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + protected override async Task RunAsync(IServiceProvider serviceProvider) + { + var now = DateTime.Now; + var db = serviceProvider.GetService(); + + var data = await db.Queryable().Where(x => x.ValidDateTime.HasValue && x.ValidDateTime >= now).ToListAsync(); + var deviceCodes = data.Select(x => x.DeviceCode).Distinct().ToList(); + var devices = await db.Queryable().Where(x => deviceCodes.Contains(x.Code)).ToListAsync(); + + foreach (var item in data) + { + var userInfo = await db.Queryable().Where(x => x.No == item.UserNo).Select(x => new { x.Id, x.No }).SingleAsync() + ?? await db.Queryable().Where(x => x.No == item.UserNo).Select(x => new { Id = (long)x.IdentityUserId, x.No }).SingleAsync(); + + if (userInfo != null) + { + var device = devices.FirstOrDefault(x => x.Code == item.DeviceCode); + if (device != null) + { + await db.InsertAsync(new DeviceTaskEntity + { + Type = DeviceTaskEnumType.Delete, + DeviceType = device.Type, + UserId = userInfo.Id, + UserNo = userInfo.No, + DeviceUniqueNo = device.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + Version = 0, + ResultMessage = null, + Source = "例外权限到期", + Priority = 0, + TenantId = device.TenantId + }); + } + } + + await db.DeleteAsync(item); + } + } +}