From c978e773b21723a963424a65d82e91e288c9e0d3 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 6 Jun 2024 17:28:44 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=88=86=E9=85=8D=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 64 ++++++++++++++----- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 6a3dc22c..c541890d 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -33,27 +33,57 @@ public class DevicePermissionService : IDevicePermissionService public async Task AssignAsync(DevicePermissionSaveRequest request) { - var currentTenantId = _currentUser.GetStringTenantId(); - - await using var handler = await _redisCache.LockAsync($"permission:generate:{currentTenantId}"); - handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限"); - + // var currentTenantId = _currentUser.GetStringTenantId(); + // + // await using var handler = await _redisCache.LockAsync($"permission:generate:{currentTenantId}"); + // handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限"); + // + // var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId(); + // request.TenantId = tenantId; + // + // var json = request.ToJson(); + // var id = await _dbContext.InsertReturnIdentityAsync(new DevicePermissionAssignmentEntity + // { + // Assignment = json, + // IsHandler = false, + // Result = null, + // TenantId = currentTenantId + // }); + // + // await _hangfireApi.GeneratePermissionsAsync(new GeneratePermissionIdRequest() + // { + // Id = id + // }); + var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId(); - request.TenantId = tenantId; - var json = request.ToJson(); - var id = await _dbContext.InsertReturnIdentityAsync(new DevicePermissionAssignmentEntity + await GenerateDeviceTasksAsync(async () => { - Assignment = json, - IsHandler = false, - Result = null, - TenantId = currentTenantId - }); + //删除当前匹配的基地权限 + var p = await _dbContext.Queryable() + .Where(x => x.AssignType == request.AssignType) + .Where(x => x.AssignValue == request.AssignValue) + .Where(x => x.UniqueType == request.UniqueType) + .Where(x => x.TenantId == tenantId) + .ToListAsync(); - await _hangfireApi.GeneratePermissionsAsync(new GeneratePermissionIdRequest() - { - Id = id - }); + await _dbContext.DeleteReallyAsync(p); + + //保存配置的权限 + if (request.Codes.IsPresent()) + { + var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity + { + AssignType = request.AssignType, + AssignValue = request.AssignValue, + UniqueType = request.UniqueType, + UniqueValue = code, + TenantId = tenantId + }).ToList(); + + await _dbContext.InsertAsync(devicePermissions); + } + }, null); } public async Task GeneratePermissionsAsync(long id)