From 02a2971256e802f39e4a87eff500f6e6a6f013c5 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 12 Dec 2024 18:45:02 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=9D=83=E9=99=90=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GainfoPermissionsController.cs | 13 ++++++++++ .../Request/GainfoPermissionResetRequest.cs | 14 +++++++++++ .../Services/IGainfoPermissionService.cs | 2 +- .../Implements/GainfoPermissionService.cs | 25 ++++++------------- 4 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs index f740694f..1801ea53 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs @@ -3,6 +3,7 @@ using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; using Dlhis.Basic.Places.Response; +using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -65,4 +66,16 @@ public class GainfoPermissionsController : ControllerBase { return await _gainfoPermissions.GetAssignGroupAsync(userNo); } + + /// + /// 权限重置 + /// + /// + /// + [Authorize(Roles = "admin")] + [HttpPost("reset")] + public async Task ResetPermissionsAsync(GainfoPermissionResetRequest request) + { + return await _gainfoPermissions.ResetPermissionsAsync(request.UserNo, request.Status ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Delete, null); + } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs new file mode 100644 index 00000000..71d6e26b --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Organization.Request; + +public class GainfoPermissionResetRequest +{ + [Required] + public string UserNo { get; set; } + + /// + /// true下发所有,false删除所有 + /// + public bool Status { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs index 544479bb..03ce1e5b 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs @@ -17,5 +17,5 @@ public interface IGainfoPermissionService : IScopeDependency Task> GetAssignGroupAsync(string userNo); - Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes); + Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index e22b705d..4867ada3 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -33,7 +33,7 @@ public class GainfoPermissionService : IGainfoPermissionService { var gainfo = await _gainfoStore.Queryable() .Where(x => x.No == request.UserNo) - .FirstAsync(); + .SingleAsync(); if (gainfo == null) { @@ -77,7 +77,7 @@ public class GainfoPermissionService : IGainfoPermissionService return new List(); } - var groups = RecursionGetNext(currentGroup, deviceGroups).ToList(); + var groups = RecursionHelper.HandlerDeviceGroupNextCodes(currentGroup.Code, deviceGroups); return groups.Select(groupCode => { @@ -191,7 +191,7 @@ public class GainfoPermissionService : IGainfoPermissionService } - public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes) + public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes) { var gainfo = await _dbContext.Queryable() .Where(x => x.No == userNo) @@ -230,10 +230,14 @@ public class GainfoPermissionService : IGainfoPermissionService DeviceType = x.Type, TenantId = x.TenantId, Priority = 10, - Source = DeviceTaskSourceEnumType.Manually + Source = DeviceTaskSourceEnumType.Manually, }).ToList(); await _dbContext.InsertAsync(tasks); + + var addCount = type == DeviceTaskEnumType.Add ? tasks.Count : 0; + var deleteCount = type == DeviceTaskEnumType.Delete ? tasks.Count : 0; + return new DevicePermissionAssignResponse(addCount, deleteCount); } @@ -252,17 +256,4 @@ public class GainfoPermissionService : IGainfoPermissionService .Select() .ToListAsync(); } - - //********************************************************************************************************************************************** - - private static IEnumerable RecursionGetNext(DeviceGroupEntity current, List deviceGroups) - { - var next = deviceGroups.Where(x => x.PCode == current.Code).ToList(); - foreach (var item in next) - { - RecursionGetNext(item, deviceGroups); - } - - yield return current.Code; - } } \ No newline at end of file