fix 修复已知问题
This commit is contained in:
@@ -21,32 +21,39 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
{
|
||||
private readonly IDbContext _dbContext;
|
||||
private readonly ICurrentUser _currentUser;
|
||||
private readonly IMyDataPermissionService _myDataPermissionService;
|
||||
private readonly IDataPermissionService _myDataPermissionService;
|
||||
|
||||
public DevicePermissionAnalyzeService(IDbContext dbContext,
|
||||
ICurrentUser currentUser,
|
||||
IMyDataPermissionService myDataPermissionService)
|
||||
IDataPermissionService myDataPermissionService)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_currentUser = currentUser;
|
||||
_myDataPermissionService = myDataPermissionService;
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<DevicePermissionEntity>> GetDevicePermissionsAsync(DevicePermissionSaveRequest request)
|
||||
{
|
||||
var currentTenantId = await GetCurrentFactoryAsync(request);
|
||||
(bool enableDeviceFilter, List<Guid> deviceCodes) = _myDataPermissionService.GetMyDeviceCodes();
|
||||
(bool enableDeviceGroupFilter, List<Guid> deviceGroupCodes) = _myDataPermissionService.GetMyDeviceGroupCodes();
|
||||
|
||||
return await _dbContext.Queryable<DevicePermissionEntity>().Where(x => x.AssignType == request.AssignType
|
||||
&& x.AssignValue == request.GetActualAssignValue()
|
||||
&& x.UniqueType == request.UniqueType
|
||||
&& x.Type == request.Type
|
||||
&& x.TenantId == currentTenantId)
|
||||
.WhereIF(enableDeviceFilter && request.UniqueType == DeviceAssignmentTypeEnumType.Device, x => deviceCodes.Contains(x.UniqueValue))
|
||||
.WhereIF(enableDeviceGroupFilter && request.UniqueType == DeviceAssignmentTypeEnumType.Group, x => deviceGroupCodes.Contains(x.UniqueValue))
|
||||
.ToListAsync();
|
||||
var setting = _dbContext.GetQueryableSetting();
|
||||
|
||||
var query = _dbContext.Queryable<DevicePermissionEntity>().Where(x => x.AssignType == request.AssignType
|
||||
&& x.AssignValue == request.GetActualAssignValue()
|
||||
&& x.UniqueType == request.UniqueType
|
||||
&& x.Type == request.Type
|
||||
&& x.TenantId == currentTenantId);
|
||||
if (setting.GetEnableDataPermission<DevicePermissionEntity>())
|
||||
{
|
||||
(bool enableDeviceFilter, List<Guid> deviceCodes) = _myDataPermissionService.GetMyDeviceCodes();
|
||||
(bool enableDeviceGroupFilter, List<Guid> deviceGroupCodes) = _myDataPermissionService.GetMyDeviceGroupCodes();
|
||||
|
||||
query = query
|
||||
.WhereIF(enableDeviceFilter && request.UniqueType == DeviceAssignmentTypeEnumType.Device, x => deviceCodes.Contains(x.UniqueValue))
|
||||
.WhereIF(enableDeviceGroupFilter && request.UniqueType == DeviceAssignmentTypeEnumType.Group, x => deviceGroupCodes.Contains(x.UniqueValue));
|
||||
}
|
||||
|
||||
return await query.ToListAsync();
|
||||
}
|
||||
|
||||
private async Task<string> GetCurrentFactoryAsync(DevicePermissionSaveRequest request)
|
||||
@@ -179,7 +186,8 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
if (ignoreAssignType.HasValue)
|
||||
internalIgnoreAssignTypes.Add(ignoreAssignType.Value);
|
||||
|
||||
if (gainfo.Type == GainfoUserTypeEnumType.Outsource && (enableFactoryPermissions.FirstOrDefault(x => x.TenantId == gainfo.Factory)?.EnableOutsourceDown ?? true) == false)
|
||||
if (gainfo.Type == GainfoUserTypeEnumType.External ||
|
||||
(gainfo.Type == GainfoUserTypeEnumType.Outsource && (enableFactoryPermissions.FirstOrDefault(x => x.TenantId == gainfo.Factory)?.EnableOutsourceDown ?? true) == false))
|
||||
{
|
||||
internalIgnoreAssignTypes.Add(AssignTypeEnumType.Tenant);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user