From 04ea94787cb08e62f43343a61d60f83d26efa44e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 11 Jul 2024 13:52:25 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=80=BB=E8=BE=91=E5=8F=96=E5=8F=8D,?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E5=BF=BD=E7=95=A5=E7=A7=9F=E6=88=B7=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 7c7350d4..9f9a1c65 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -41,34 +41,37 @@ public class DevicePermissionService : IDevicePermissionService var role = _currentUser.GetRole(); var isAll = role is "admin" or "tenant-admin"; var deviceCodes = _myDataPermissionService.GetMyDeviceCodes(); - - //删除当前匹配的基地权限 - var p = await _dbContext.Queryable() - .Where(x => x.AssignType == request.AssignType) - .Where(x => x.AssignValue == request.AssignValue) - .Where(x => x.UniqueType == request.UniqueType) - .WhereIF(request.UniqueType == DeviceAssignmentTypeEnumType.Device && isAll, x => deviceCodes.Contains(x.UniqueValue)) - .Where(x => x.Type == request.Type) - .Where(x => x.TenantId == currentTenantId) - .ToListAsync(); - await _dbContext.DeleteAsync(p); - - //保存配置的权限 - if (request.Codes.IsPresent()) + await _dbContext.IgnoreAsync(async () => { - var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity - { - AssignType = request.AssignType, - AssignValue = request.AssignValue, - UniqueType = request.UniqueType, - UniqueValue = code, - Type = request.Type, - TenantId = currentTenantId - }).ToList(); + //删除当前匹配的基地权限 + var p = await _dbContext.Queryable() + .Where(x => x.AssignType == request.AssignType) + .Where(x => x.AssignValue == request.AssignValue) + .Where(x => x.UniqueType == request.UniqueType) + .WhereIF(request.UniqueType == DeviceAssignmentTypeEnumType.Device && !isAll, x => deviceCodes.Contains(x.UniqueValue)) + .Where(x => x.Type == request.Type) + .Where(x => x.TenantId == currentTenantId) + .ToListAsync(); - await _dbContext.InsertAsync(devicePermissions); - } + await _dbContext.DeleteAsync(p); + + //保存配置的权限 + if (request.Codes.IsPresent()) + { + var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity + { + AssignType = request.AssignType, + AssignValue = request.AssignValue, + UniqueType = request.UniqueType, + UniqueValue = code, + Type = request.Type, + TenantId = currentTenantId + }).ToList(); + + await _dbContext.InsertAsync(devicePermissions); + } + }); }, null); }