fix 修复已知问题

This commit is contained in:
Kurris
2024-12-15 20:49:12 +08:00
parent d3dbff9248
commit f7b28440b7
9 changed files with 94 additions and 30 deletions

View File

@@ -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);
}