fix devicePermission-unique
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user