feat 自动移除例外
This commit is contained in:
@@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 移除例外权限
|
||||
/// </summary>
|
||||
[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<IDbContext>();
|
||||
|
||||
var data = await db.Queryable<DevicePermissionManuallyEntity>().Where(x => x.ValidDateTime.HasValue && x.ValidDateTime >= now).ToListAsync();
|
||||
var deviceCodes = data.Select(x => x.DeviceCode).Distinct().ToList();
|
||||
var devices = await db.Queryable<DeviceEntity>().Where(x => deviceCodes.Contains(x.Code)).ToListAsync();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
var userInfo = await db.Queryable<GainfoEntity>().Where(x => x.No == item.UserNo).Select(x => new { x.Id, x.No }).SingleAsync()
|
||||
?? await db.Queryable<GainfoLeaveEntity>().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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user