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)