diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs index 728e48a9..7eb1795e 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs @@ -14,10 +14,10 @@ namespace Dlhis.Basic.Organization.Controllers; [ApiController] public class GainfoPermissionsController : ControllerBase { - private readonly IGainfoPermissions _gainfoPermissions; + private readonly IGainfoPermissionService _gainfoPermissions; - public GainfoPermissionsController(IGainfoPermissions gainfoPermissions) + public GainfoPermissionsController(IGainfoPermissionService gainfoPermissions) { _gainfoPermissions = gainfoPermissions; } @@ -65,4 +65,15 @@ public class GainfoPermissionsController : ControllerBase { return await _gainfoPermissions.GetAssignGroupAsync(userNo); } + + /// + /// 权限下发重置 + /// + /// + /// + [HttpPost("reset")] + public async Task ResetPermissionsAsync(GainfoPermissionResetRequest request) + { + await _gainfoPermissions.ResetPermissionsAsync(request); + } } diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs new file mode 100644 index 00000000..bea8a01b --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Organization.Request; + +public class GainfoPermissionResetRequest +{ + /// + /// 档案号 + /// + [Required] + public string UserNo { get; set; } +} diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs similarity index 82% rename from Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs rename to Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs index 182926f0..f1feb8e5 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissions.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs @@ -6,7 +6,7 @@ using Kurisu.Core.DataAccess.Dto; namespace Dlhis.Basic.Organization.Services; -public interface IGainfoPermissions : IScopeDependency +public interface IGainfoPermissionService : IScopeDependency { Task> GetPlaceByGainfoAsync(DeviceAssRequest request); @@ -15,4 +15,6 @@ public interface IGainfoPermissions : IScopeDependency Task> GetAssignDeviceCodesAsync(DeviceAssRequest request); Task> GetAssignGroupAsync(string userNo); + + Task ResetPermissionsAsync(GainfoPermissionResetRequest request); } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs similarity index 88% rename from Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs rename to Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index 83d9bf4a..d0cfd27d 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissions.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -9,6 +9,7 @@ using Dlhis.Entity.Canteen.Enums; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Sys.Enums; +using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; @@ -16,13 +17,13 @@ using SqlSugar; namespace Dlhis.Basic.Organization.Services.Implements; -public class GainfoPermissions : IGainfoPermissions +public class GainfoPermissionService : IGainfoPermissionService { private readonly IGainfoStore _gainfoStore; private readonly IDevicePermissionService _devicePermissionService; private readonly IDbContext _dbContext; - public GainfoPermissions(IGainfoStore gainfoStore, IDevicePermissionService devicePermissionService, IDbContext dbContext) + public GainfoPermissionService(IGainfoStore gainfoStore, IDevicePermissionService devicePermissionService, IDbContext dbContext) { _gainfoStore = gainfoStore; _devicePermissionService = devicePermissionService; @@ -196,6 +197,30 @@ public class GainfoPermissions : IGainfoPermissions } + public async Task ResetPermissionsAsync(GainfoPermissionResetRequest request) + { + var gainfo = await _dbContext.Queryable().Where(x => x.No == request.UserNo).SingleAsync(); + gainfo.ThrowIfNull("档案数据不存在"); + + var deviceCodes = await _devicePermissionService.GetAssignDeviceCodesAsync(request.UserNo); + var devices = await _dbContext.Queryable().Where(x => deviceCodes.Contains(x.Code)).ToListAsync(); + + var tasks = devices.Select(x => new DeviceTaskEntity + { + CancellationId = 0, + Version = 0, + DeviceUniqueNo = x.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + UserNo = request.UserNo, + Type = DeviceTaskEnumType.Add, + TenantId = gainfo.Factory, + }) + .ToList(); + + await _dbContext.InsertAsync(tasks); + } + + public async Task> GetAssignGroupAsync(string userNo) { var groups = await _devicePermissionService.GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo); @@ -216,9 +241,3 @@ public class GainfoPermissions : IGainfoPermissions yield return current.Code; } } - -public class KeyValue -{ - public string Key { get; set; } - public T Value { get; set; } -}