fix 权限数据优化
This commit is contained in:
@@ -56,14 +56,18 @@ public class GetDataPermissionService : IGetDataPermissions, ISingletonDependenc
|
|||||||
if (deviceGroupCodes.Any())
|
if (deviceGroupCodes.Any())
|
||||||
{
|
{
|
||||||
var data = db.Queryable<DeviceGroupEntity>().ToList();
|
var data = db.Queryable<DeviceGroupEntity>().ToList();
|
||||||
//开始递归处理
|
|
||||||
var tops = data.Where(x => !x.PCode.HasValue).ToList();
|
var myDeviceGroupCodes = new List<Guid>();
|
||||||
tops.ForEach(x => { DeviceGroupRecursionGetNext(x, data, deviceGroupCodes, deviceGroupCodes.Contains(x.Code)); });
|
foreach (Guid deviceGroupCode in deviceGroupCodes)
|
||||||
deviceGroupCodes = deviceGroupCodes.Distinct().ToList();
|
{
|
||||||
|
myDeviceGroupCodes.AddRange(RecursionHelper.HandlerDeviceGroupNextCodes(deviceGroupCode, data));
|
||||||
|
}
|
||||||
|
|
||||||
|
myDeviceGroupCodes = myDeviceGroupCodes.Distinct().ToList();
|
||||||
|
|
||||||
if (deviceCodeProperty != null)
|
if (deviceCodeProperty != null)
|
||||||
{
|
{
|
||||||
deviceCodes = db.Queryable<DeviceGroupRelationshipEntity>().Where(x => deviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToList();
|
deviceCodes = db.Queryable<DeviceGroupRelationshipEntity>().Where(x => myDeviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deviceGroupCodeProperty != null)
|
if (deviceGroupCodeProperty != null)
|
||||||
@@ -82,39 +86,50 @@ public class GetDataPermissionService : IGetDataPermissions, ISingletonDependenc
|
|||||||
|
|
||||||
return dict;
|
return dict;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DeviceGroupRecursionGetNext(DeviceGroupEntity current, List<DeviceGroupEntity> data, List<Guid> result, bool add)
|
|
||||||
{
|
|
||||||
var next = data.Where(x => x.PCode == current.Code).ToList();
|
|
||||||
foreach (var item in next)
|
|
||||||
{
|
|
||||||
if (add)
|
|
||||||
{
|
|
||||||
result.Add(item.Code);
|
|
||||||
}
|
|
||||||
|
|
||||||
DeviceGroupRecursionGetNext(item, data, result, result.Contains(item.Code));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IMyDataPermissionService : IScopeDependency
|
public interface IMyDataPermissionService : IScopeDependency
|
||||||
{
|
{
|
||||||
List<Guid> GetMyDeviceCodes();
|
(bool, List<Guid>) GetMyDeviceCodes();
|
||||||
|
(bool, List<Guid>) GetMyDeviceGroupCodes();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MyDataPermissionService : IMyDataPermissionService
|
public class MyDataPermissionService : IMyDataPermissionService
|
||||||
{
|
{
|
||||||
private readonly IGetDataPermissions _getDataPermissions;
|
private readonly IGetDataPermissions _getDataPermissions;
|
||||||
|
private readonly ICurrentUser _currentUser;
|
||||||
|
|
||||||
public MyDataPermissionService(IGetDataPermissions getDataPermissions)
|
public MyDataPermissionService(IGetDataPermissions getDataPermissions, ICurrentUser currentUser)
|
||||||
{
|
{
|
||||||
_getDataPermissions = getDataPermissions;
|
_getDataPermissions = getDataPermissions;
|
||||||
|
_currentUser = currentUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public List<Guid> GetMyDeviceCodes()
|
public (bool, List<Guid>) GetMyDeviceCodes()
|
||||||
{
|
{
|
||||||
return _getDataPermissions.GetData<DeviceEntity>().FirstOrDefault().Value ?? new List<Guid>();
|
var codes = new List<Guid>();
|
||||||
|
|
||||||
|
var disableFilter = _currentUser.GetRole() is "admin" or "tenant-admin";
|
||||||
|
if (!disableFilter)
|
||||||
|
{
|
||||||
|
codes = _getDataPermissions.GetData<DeviceEntity>().FirstOrDefault().Value ?? new List<Guid>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (!disableFilter, codes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public (bool, List<Guid>) GetMyDeviceGroupCodes()
|
||||||
|
{
|
||||||
|
var codes = new List<Guid>();
|
||||||
|
|
||||||
|
var disableFilter = _currentUser.GetRole() is "admin" or "tenant-admin";
|
||||||
|
if (!disableFilter)
|
||||||
|
{
|
||||||
|
codes = _getDataPermissions.GetData<DeviceGroupEntity>().FirstOrDefault().Value ?? new List<Guid>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (!disableFilter, codes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@ using Dlhis.Basic.Device.Dtos;
|
|||||||
using Dlhis.Basic.Device.Request;
|
using Dlhis.Basic.Device.Request;
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
using Dlhis.Basic.Organization.Dto;
|
using Dlhis.Basic.Organization.Dto;
|
||||||
|
using Dlhis.Entity.Sys.Entities;
|
||||||
using Dlhis.Entity.Sys.Enums;
|
using Dlhis.Entity.Sys.Enums;
|
||||||
|
|
||||||
namespace Dlhis.Basic.Device.Services;
|
namespace Dlhis.Basic.Device.Services;
|
||||||
@@ -11,6 +12,8 @@ namespace Dlhis.Basic.Device.Services;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IDevicePermissionAnalyzeService : IScopeDependency
|
public interface IDevicePermissionAnalyzeService : IScopeDependency
|
||||||
{
|
{
|
||||||
|
Task<List<DevicePermissionEntity>> GetDevicePermissions(DevicePermissionSaveRequest request);
|
||||||
|
|
||||||
Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos);
|
Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos);
|
||||||
|
|
||||||
Task<Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(List<string> userNos, params AssignTypeEnumType[] ignoreAssignTypes);
|
Task<Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(List<string> userNos, params AssignTypeEnumType[] ignoreAssignTypes);
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
using Dlhis.Basic.DataPermissions;
|
|
||||||
using Dlhis.Basic.Device.Dtos;
|
using Dlhis.Basic.Device.Dtos;
|
||||||
using Dlhis.Basic.Device.Request;
|
using Dlhis.Basic.Device.Request;
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
@@ -12,7 +11,6 @@ using Kurisu.AspNetCore.DataAccess.Entity;
|
|||||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||||
using Kurisu.AspNetCore.Scope;
|
using Kurisu.AspNetCore.Scope;
|
||||||
using Kurisu.AspNetCore.Utils.Extensions;
|
using Kurisu.AspNetCore.Utils.Extensions;
|
||||||
using SqlSugar;
|
|
||||||
|
|
||||||
namespace Dlhis.Basic.Device.Services.Implements;
|
namespace Dlhis.Basic.Device.Services.Implements;
|
||||||
|
|
||||||
@@ -21,31 +19,26 @@ namespace Dlhis.Basic.Device.Services.Implements;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
||||||
{
|
{
|
||||||
private readonly ICurrentUser _currentUser;
|
|
||||||
private readonly IMyDataPermissionService _myDataPermissionService;
|
|
||||||
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
|
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
|
||||||
|
|
||||||
protected IDbContext DbContext { get; }
|
protected IDbContext DbContext { get; }
|
||||||
|
|
||||||
protected BasePermissionAnalyzeService(IServiceProvider serviceProvider)
|
protected BasePermissionAnalyzeService(IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
_currentUser = serviceProvider.GetService<ICurrentUser>();
|
ICurrentUser currentUser = serviceProvider.GetService<ICurrentUser>();
|
||||||
_myDataPermissionService = serviceProvider.GetService<IMyDataPermissionService>();
|
|
||||||
DbContext = serviceProvider.GetService<IDbContext>();
|
DbContext = serviceProvider.GetService<IDbContext>();
|
||||||
CurrentTenantId = _currentUser.GetStringTenantId();
|
CurrentTenantId = currentUser.GetStringTenantId();
|
||||||
_devicePermissionAnalyzeService = serviceProvider.GetService<IDevicePermissionAnalyzeService>();
|
_devicePermissionAnalyzeService = serviceProvider.GetService<IDevicePermissionAnalyzeService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private string CurrentTenantId { get; }
|
private string CurrentTenantId { get; }
|
||||||
|
|
||||||
protected ISugarQueryable<DevicePermissionEntity> DevicePermission => DbContext.Queryable<DevicePermissionEntity>();
|
|
||||||
|
|
||||||
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
|
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
|
||||||
{
|
{
|
||||||
await CheckWhetherAssignToTopDeviceGroupAsync(request);
|
await CheckWhetherAssignToTopDeviceGroupAsync(request);
|
||||||
await CheckAssignedToTenantAsync(request);
|
await CheckAssignedToTenantAsync(request);
|
||||||
|
|
||||||
var dps = await GetAssignedDevicePermissionsAsync(request);
|
var dps = await _devicePermissionAnalyzeService.GetDevicePermissions(request);
|
||||||
|
|
||||||
(List<Guid> codesToAdd, List<Guid> codesToDelete) = await GetDiffAsync(request.UniqueType, dps, request.Codes);
|
(List<Guid> codesToAdd, List<Guid> codesToDelete) = await GetDiffAsync(request.UniqueType, dps, request.Codes);
|
||||||
if (codesToAdd.IsEmpty() && codesToDelete.IsEmpty())
|
if (codesToAdd.IsEmpty() && codesToDelete.IsEmpty())
|
||||||
@@ -225,35 +218,6 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Guid> GetMyUniqueValues(DeviceAssignmentTypeEnumType uniqueType)
|
|
||||||
{
|
|
||||||
var searchAll = _currentUser.GetRole() is "admin" or "tenant-admin";
|
|
||||||
if (!searchAll && uniqueType == DeviceAssignmentTypeEnumType.Device)
|
|
||||||
{
|
|
||||||
return _myDataPermissionService.GetMyDeviceCodes();
|
|
||||||
}
|
|
||||||
|
|
||||||
return new List<Guid>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取当前分配对应的现有权限
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private async Task<List<DevicePermissionEntity>> GetAssignedDevicePermissionsAsync(DevicePermissionSaveRequest request)
|
|
||||||
{
|
|
||||||
var myData = GetMyUniqueValues(request.UniqueType);
|
|
||||||
|
|
||||||
return await DevicePermission.Where(x => x.AssignType == request.AssignType
|
|
||||||
&& x.AssignValue == request.GetActualAssignValue()
|
|
||||||
&& x.UniqueType == request.UniqueType
|
|
||||||
&& x.Type == request.Type
|
|
||||||
&& x.TenantId == CurrentTenantId)
|
|
||||||
.WhereIF(myData.Any(), x => myData.Contains(x.UniqueValue))
|
|
||||||
.ToListAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取现在权限与当前的分配之间的deviceCode差异
|
/// 获取现在权限与当前的分配之间的deviceCode差异
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Dlhis.Basic.Device.Request;
|
using Dlhis.Basic.DataPermissions;
|
||||||
|
using Dlhis.Basic.Device.Request;
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
using Dlhis.Entity.Basic.Entity;
|
using Dlhis.Entity.Basic.Entity;
|
||||||
using Dlhis.Entity.Device.Entities;
|
using Dlhis.Entity.Device.Entities;
|
||||||
@@ -18,16 +19,19 @@ public class DeviceGroupService : IDeviceGroupService
|
|||||||
private readonly IDbContext _dbContext;
|
private readonly IDbContext _dbContext;
|
||||||
private readonly ICurrentUser _currentUser;
|
private readonly ICurrentUser _currentUser;
|
||||||
private readonly INamedResolver _namedResolver;
|
private readonly INamedResolver _namedResolver;
|
||||||
|
private readonly IMyDataPermissionService _myDataPermissionService;
|
||||||
private readonly ITenantApi _tenantApi;
|
private readonly ITenantApi _tenantApi;
|
||||||
|
|
||||||
public DeviceGroupService(IDbContext dbContext,
|
public DeviceGroupService(IDbContext dbContext,
|
||||||
ICurrentUser currentUser,
|
ICurrentUser currentUser,
|
||||||
INamedResolver namedResolver,
|
INamedResolver namedResolver,
|
||||||
|
IMyDataPermissionService myDataPermissionService,
|
||||||
ITenantApi tenantApi)
|
ITenantApi tenantApi)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_currentUser = currentUser;
|
_currentUser = currentUser;
|
||||||
_namedResolver = namedResolver;
|
_namedResolver = namedResolver;
|
||||||
|
_myDataPermissionService = myDataPermissionService;
|
||||||
_tenantApi = tenantApi;
|
_tenantApi = tenantApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,16 +122,17 @@ public class DeviceGroupService : IDeviceGroupService
|
|||||||
|
|
||||||
await _dbContext.InsertAsync(entities);
|
await _dbContext.InsertAsync(entities);
|
||||||
|
|
||||||
return await PermissionResetAsync(request.GroupCode);
|
return await PermissionResetAsync(request.GroupCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<DevicePermissionAssignResponse> PermissionResetAsync(Guid groupCode)
|
private async Task<DevicePermissionAssignResponse> PermissionResetAsync(Guid groupCode)
|
||||||
{
|
{
|
||||||
var deviceGroups = RecursionHelper.HandlerDeviceGroupPreviousCodes(groupCode, await _dbContext.Queryable<DeviceGroupEntity>().ToListAsync());
|
var deviceGroups = await _dbContext.Queryable<DeviceGroupEntity>().ToListAsync();
|
||||||
|
var deviceGroupCodes = RecursionHelper.HandlerDeviceGroupPreviousCodes(groupCode, deviceGroups);
|
||||||
|
|
||||||
var dps = await _dbContext.Queryable<DevicePermissionEntity>()
|
var dps = await _dbContext.Queryable<DevicePermissionEntity>()
|
||||||
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
|
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
|
||||||
.Where(x => deviceGroups.Contains(x.UniqueValue))
|
.Where(x => deviceGroupCodes.Contains(x.UniqueValue))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var result = new List<DevicePermissionAssignResponse>();
|
var result = new List<DevicePermissionAssignResponse>();
|
||||||
|
|||||||
@@ -32,6 +32,25 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
_myDataPermissionService = myDataPermissionService;
|
_myDataPermissionService = myDataPermissionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<List<DevicePermissionEntity>> GetDevicePermissions(DevicePermissionSaveRequest request)
|
||||||
|
{
|
||||||
|
var currentTenantId = _currentUser.GetStringTenantId();
|
||||||
|
|
||||||
|
(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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
|
public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
|
||||||
{
|
{
|
||||||
var before = await GetUserAssignDeviceCodesInTenantAsync(userNos);
|
var before = await GetUserAssignDeviceCodesInTenantAsync(userNos);
|
||||||
@@ -365,13 +384,13 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
|||||||
{
|
{
|
||||||
var currentAssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
|
var currentAssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
|
||||||
|
|
||||||
var deviceCodes = _currentUser.GetRole() is "admin" or "tenant-admin" ? new List<Guid>() : _myDataPermissionService.GetMyDeviceCodes();
|
(bool enableFilter, List<Guid> deviceCodes) = _myDataPermissionService.GetMyDeviceCodes();
|
||||||
|
|
||||||
return await _dbContext.Queryable<DevicePermissionEntity>()
|
return await _dbContext.Queryable<DevicePermissionEntity>()
|
||||||
.Where(x => x.AssignType == request.AssignType)
|
.Where(x => x.AssignType == request.AssignType)
|
||||||
.Where(x => x.AssignValue == currentAssignValue)
|
.Where(x => x.AssignValue == currentAssignValue)
|
||||||
.Where(x => x.UniqueType == request.UniqueType)
|
.Where(x => x.UniqueType == request.UniqueType)
|
||||||
.WhereIF(deviceCodes.Any() && request.UniqueType == DeviceAssignmentTypeEnumType.Device, x => deviceCodes.Contains(x.UniqueValue))
|
.WhereIF(enableFilter && request.UniqueType == DeviceAssignmentTypeEnumType.Device, x => deviceCodes.Contains(x.UniqueValue))
|
||||||
.Where(x => x.Type == request.Type)
|
.Where(x => x.Type == request.Type)
|
||||||
.Select(x => x.UniqueValue)
|
.Select(x => x.UniqueValue)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Dlhis.Basic.Device;
|
using Dlhis.Basic.DataPermissions;
|
||||||
|
using Dlhis.Basic.Device;
|
||||||
using Dlhis.Basic.Device.Request;
|
using Dlhis.Basic.Device.Request;
|
||||||
using Dlhis.Basic.Device.Response;
|
using Dlhis.Basic.Device.Response;
|
||||||
using Dlhis.Basic.Device.Services;
|
using Dlhis.Basic.Device.Services;
|
||||||
@@ -18,12 +19,17 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
{
|
{
|
||||||
private readonly IDbContext _dbContext;
|
private readonly IDbContext _dbContext;
|
||||||
private readonly ICurrentUser _currentUser;
|
private readonly ICurrentUser _currentUser;
|
||||||
|
private readonly IMyDataPermissionService _myDataPermissionService;
|
||||||
private readonly INamedResolver _namedResolver;
|
private readonly INamedResolver _namedResolver;
|
||||||
|
|
||||||
public GainfoGroupService(IDbContext dbContext, ICurrentUser currentUser, INamedResolver namedResolver)
|
public GainfoGroupService(IDbContext dbContext,
|
||||||
|
ICurrentUser currentUser,
|
||||||
|
IMyDataPermissionService myDataPermissionService,
|
||||||
|
INamedResolver namedResolver)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_currentUser = currentUser;
|
_currentUser = currentUser;
|
||||||
|
_myDataPermissionService = myDataPermissionService;
|
||||||
_namedResolver = namedResolver;
|
_namedResolver = namedResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +87,7 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
if (request.UserNos.IsPresent())
|
if (request.UserNos.IsPresent())
|
||||||
{
|
{
|
||||||
var pGrp = await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == request.GroupCode).FirstAsync();
|
var pGrp = await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.Code == request.GroupCode).FirstAsync();
|
||||||
(pGrp?.Editable == false && pGrp?.IsDefault == true).ThrowIfTrue("不可分配人员到当前分组");
|
(pGrp is { Editable: false, IsDefault: true }).ThrowIfTrue("不可分配人员到当前分组");
|
||||||
}
|
}
|
||||||
|
|
||||||
var existsNextGroup = await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.PCode == request.GroupCode).AnyAsync();
|
var existsNextGroup = await _dbContext.Queryable<GainfoGroupEntity>().Where(x => x.PCode == request.GroupCode).AnyAsync();
|
||||||
@@ -113,13 +119,28 @@ public class GainfoGroupService : IGainfoGroupService
|
|||||||
|
|
||||||
private async Task<DevicePermissionAssignResponse> PermissionResetAsync(Guid groupCode)
|
private async Task<DevicePermissionAssignResponse> PermissionResetAsync(Guid groupCode)
|
||||||
{
|
{
|
||||||
var gainfoGroups = RecursionHelper.HandlerGainfoGroupPreviousCodes(groupCode, await _dbContext.Queryable<GainfoGroupEntity>().ToListAsync()).Select(x => x.ToString());
|
var gainfoGroups = await _dbContext.Queryable<GainfoGroupEntity>().ToListAsync();
|
||||||
|
var gainfoGroupCodes = RecursionHelper.HandlerGainfoGroupPreviousCodes(groupCode, gainfoGroups).Select(x => x.ToString());
|
||||||
|
|
||||||
|
(bool enableDeviceFilter, List<Guid> deviceCodes) = _myDataPermissionService.GetMyDeviceCodes();
|
||||||
|
(bool enableDeviceGroupFilter, List<Guid> deviceGroupCodes) = _myDataPermissionService.GetMyDeviceGroupCodes();
|
||||||
|
|
||||||
var dps = await _dbContext.Queryable<DevicePermissionEntity>()
|
var dps = await _dbContext.Queryable<DevicePermissionEntity>()
|
||||||
.Where(x => x.AssignType == AssignTypeEnumType.Group)
|
.Where(x => x.AssignType == AssignTypeEnumType.Group)
|
||||||
.Where(x => gainfoGroups.Contains(x.AssignValue))
|
.Where(x => gainfoGroupCodes.Contains(x.AssignValue))
|
||||||
|
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Device)
|
||||||
|
.WhereIF(enableDeviceFilter, x => deviceCodes.Contains(x.UniqueValue))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
var dps2 = await _dbContext.Queryable<DevicePermissionEntity>()
|
||||||
|
.Where(x => x.AssignType == AssignTypeEnumType.Group)
|
||||||
|
.Where(x => gainfoGroupCodes.Contains(x.AssignValue))
|
||||||
|
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
|
||||||
|
.WhereIF(enableDeviceGroupFilter, x => deviceGroupCodes.Contains(x.UniqueValue))
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
dps.AddRange(dps2);
|
||||||
|
|
||||||
var analyzeService = _namedResolver.GetService<IPermissionAnalyzeService>(PermissionAnalyzeConstants.GetTypeName(AssignTypeEnumType.Group));
|
var analyzeService = _namedResolver.GetService<IPermissionAnalyzeService>(PermissionAnalyzeConstants.GetTypeName(AssignTypeEnumType.Group));
|
||||||
|
|
||||||
var result = new List<DevicePermissionAssignResponse>();
|
var result = new List<DevicePermissionAssignResponse>();
|
||||||
|
|||||||
Reference in New Issue
Block a user