diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index 552efee4..5daf8d28 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -68,9 +68,9 @@ public class DevicePermissionsController : ControllerBase [HttpGet("assignments")] public async Task> GetAssignmentsAsync([FromQuery] DeviceGetAssignmentsRequest request) { - return await _devicePermissionService.GetAssignmentsAsync(request.UniqueType, request.AssignType, request.AssignValue); + return await _devicePermissionService.GetAssignmentsAsync(request); } - + /// /// 当前类型的权限分配 /// diff --git a/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs index 2b961487..3e19b580 100644 --- a/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs @@ -1,10 +1,11 @@ using Dlhis.Entity.Sys.Enums; using System.ComponentModel.DataAnnotations; using Dlhis.Entity.Device.Enums; +using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.Basic.Device.Request; -public class DeviceGetAssignmentsRequest +public class DeviceGetAssignmentsRequest : IValidatableObject { /// /// 权限分配类型 DeviceAssignmentTypeEnumType @@ -27,6 +28,22 @@ public class DeviceGetAssignmentsRequest /// 设备类型 /// public DeviceTypeEnumType Type { get; set; } + + /// + /// AssignType == AssignTypeEnumType.Department 需要传入 + /// + public string TenantId { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + if (AssignType == AssignTypeEnumType.Department) + { + if (TenantId.IsEmpty()) + { + yield return new ValidationResult("请明确具体的厂区", new[] { nameof(TenantId) }); + } + } + } } public class DeviceGetAssignmentUniquesRequest diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index b09ea908..78616140 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -28,11 +28,8 @@ public interface IDevicePermissionService : IScopeDependency /// /// 获取分配的权限 /// - /// - /// - /// /// - Task> GetAssignmentsAsync(DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue); + Task> GetAssignmentsAsync(DeviceGetAssignmentsRequest request); Task> GetAssignmentUniqueAsync(DeviceGetAssignmentUniquesRequest request); diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 4aed72a0..a40d8f1b 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -175,12 +175,14 @@ public class DevicePermissionService : IDevicePermissionService } } - public async Task> GetAssignmentsAsync(DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue) + public async Task> GetAssignmentsAsync(DeviceGetAssignmentsRequest request) { - var devicePermissions = await _dbContext.Queryable().ToListAsync(); + var devicePermissions = await _dbContext.Queryable() + .WhereIF(request.TenantId.IsPresent(), x => x.TenantId == request.TenantId) + .ToListAsync(); var deviceGroups = await _dbContext.Queryable().ToListAsync(); - var result = GetAssignCodesInternal(devicePermissions, deviceGroups, uniqueType, assignType, assignValue); + var result = GetAssignCodesInternal(devicePermissions, deviceGroups, request.UniqueType, request.AssignType, request.AssignValue); return result.FirstOrDefault(x => x.Tenant == _currentUser.GetStringTenantId())?.Codes; } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index b8d202c1..51133cf3 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Device.Response; +using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Response; using Dlhis.Basic.Device.Services; using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; @@ -189,13 +190,20 @@ public class GainfoPermissionService : IGainfoPermissionService public async Task> GetAssignGroupAsync(string userNo) { - var groups = await _devicePermissionService.GetAssignmentsAsync(DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo); + //(DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo + var groups = await _devicePermissionService.GetAssignmentsAsync(new DeviceGetAssignmentsRequest + { + UniqueType = DeviceAssignmentTypeEnumType.Group, + AssignType = AssignTypeEnumType.User, + AssignValue = userNo + }); + return await _dbContext.Queryable() .Where(x => groups.Contains(x.Code)) .Select() .ToListAsync(); } - + //********************************************************************************************************************************************** private static IEnumerable RecursionGetNext(DeviceGroupEntity current, List deviceGroups)