fix devicePermission-unique

This commit is contained in:
2024-12-24 19:41:11 +08:00
parent 303319c0fd
commit d6e8976ff2

View File

@@ -23,21 +23,18 @@ public class DevicePermissionService : IDevicePermissionService
private readonly IDbContext _dbContext; private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi; private readonly ITenantApi _tenantApi;
private readonly INamedResolver _namedResolver; private readonly INamedResolver _namedResolver;
private readonly ILogger<DevicePermissionService> _logger;
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService; private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
private readonly ICurrentUser _currentUser; private readonly ICurrentUser _currentUser;
public DevicePermissionService(IDbContext dbContext, public DevicePermissionService(IDbContext dbContext,
ITenantApi tenantApi, ITenantApi tenantApi,
INamedResolver namedResolver, INamedResolver namedResolver,
ILogger<DevicePermissionService> logger,
IDevicePermissionAnalyzeService devicePermissionAnalyzeService, IDevicePermissionAnalyzeService devicePermissionAnalyzeService,
ICurrentUser currentUser) ICurrentUser currentUser)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_tenantApi = tenantApi; _tenantApi = tenantApi;
_namedResolver = namedResolver; _namedResolver = namedResolver;
_logger = logger;
_devicePermissionAnalyzeService = devicePermissionAnalyzeService; _devicePermissionAnalyzeService = devicePermissionAnalyzeService;
_currentUser = currentUser; _currentUser = currentUser;
} }
@@ -114,18 +111,14 @@ public class DevicePermissionService : IDevicePermissionService
{ {
if (userTenantDeviceCodes.TryGetValue(userNo, out var permissions)) if (userTenantDeviceCodes.TryGetValue(userNo, out var permissions))
{ {
var ov = permissions.ToJson();
foreach (var permission in permissions) foreach (var permission in permissions)
{ {
permission.AssignTypes = permission.AssignTypes permission.AssignTypes.RemoveAll(x => x.UniqueType == DeviceAssignmentTypeEnumType.Device && x.AssignType == AssignTypeEnumType.User);
.Where(x => x.UniqueType != DeviceAssignmentTypeEnumType.Device && x.AssignType != AssignTypeEnumType.User)
.ToList();
} }
var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList(); var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
if (myDeviceCodes.All(x => x != device.Code)) if (myDeviceCodes.All(x => x != device.Code))
{ {
_logger.LogInformation("触发删除:{userNo} . {originalJson} . {json}", userNo, ov, permissions.ToJson());
tasksToDelete.Add(new DeviceTaskEntity tasksToDelete.Add(new DeviceTaskEntity
{ {
Type = DeviceTaskEnumType.Delete, Type = DeviceTaskEnumType.Delete,