feat 数据权限支持用户组
This commit is contained in:
@@ -32,7 +32,7 @@ public class DataPermissionsController : ControllerBase
|
||||
|
||||
[HttpGet("assignments")]
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(string assignValue,
|
||||
[EnumDataType(typeof(DeviceAssignmentTypeEnumType))] DeviceAssignmentTypeEnumType uniqueType,
|
||||
[EnumDataType(typeof(DataPermissionAssignmentEnumType))] DataPermissionAssignmentEnumType uniqueType,
|
||||
DeviceTypeEnumType type)
|
||||
{
|
||||
return await _dataPermissionService.GetAssignmentsAsync(assignValue, uniqueType, type);
|
||||
|
||||
@@ -9,20 +9,24 @@ public class DataPermissionSaveRequest : IValidatableObject
|
||||
[Required]
|
||||
public string AssignValue { get; set; }
|
||||
|
||||
[EnumDataType(typeof(DeviceAssignmentTypeEnumType))]
|
||||
public DeviceAssignmentTypeEnumType UniqueType { get; set; }
|
||||
[EnumDataType(typeof(DataPermissionAssignmentEnumType))]
|
||||
public DataPermissionAssignmentEnumType UniqueType { get; set; }
|
||||
|
||||
public List<Guid> Codes { get; set; }
|
||||
|
||||
public List<Guid> Codes { get; set; } = new();
|
||||
|
||||
[EnumDataType(typeof(DeviceTypeEnumType))]
|
||||
public DeviceTypeEnumType Type { get; set; }
|
||||
|
||||
public DeviceTypeEnumType? Type { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
if (UniqueType == DeviceAssignmentTypeEnumType.BusinessPlace)
|
||||
if (UniqueType is DataPermissionAssignmentEnumType.Device or DataPermissionAssignmentEnumType.Group)
|
||||
{
|
||||
yield return new ValidationResult("不支持营业点分配", new[] { nameof(UniqueType) });
|
||||
if (!Type.HasValue)
|
||||
{
|
||||
yield return new ValidationResult("类型" + UniqueType + "需要传入Type");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,5 @@ public interface IDataPermissionService : IScopeDependency
|
||||
{
|
||||
Task SaveAsync(DataPermissionSaveRequest request);
|
||||
|
||||
Task<List<Guid>> GetAssignmentsAsync(string assignValue, DeviceAssignmentTypeEnumType uniqueType, DeviceTypeEnumType type);
|
||||
Task<List<Guid>> GetAssignmentsAsync(string assignValue, DataPermissionAssignmentEnumType uniqueType, DeviceTypeEnumType? type);
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using Dlhis.Entity.Sys.Entities;
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
using Dlhis.Sys.DataPermission.Request;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||
using Kurisu.AspNetCore.Utils.Extensions;
|
||||
|
||||
namespace Dlhis.Sys.DataPermission.Services.Implements;
|
||||
|
||||
@@ -20,30 +21,30 @@ public class DataPermissionService : IDataPermissionService
|
||||
{
|
||||
var data = await _dbContext.Queryable<DataPermissionEntity>()
|
||||
.Where(x => x.AssignValue == request.AssignValue)
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.UniqueType == request.UniqueType)
|
||||
.Where(x => x.DeviceType == request.Type)
|
||||
.WhereIF(request.Type.HasValue, x => x.DeviceType == request.Type)
|
||||
.ToListAsync();
|
||||
|
||||
await _dbContext.DeleteReallyAsync(data);
|
||||
|
||||
await _dbContext.InsertAsync(request.Codes.Select(x => new DataPermissionEntity
|
||||
if (request.Codes.IsPresent())
|
||||
{
|
||||
AssignType = AssignTypeEnumType.User,
|
||||
AssignValue = request.AssignValue,
|
||||
UniqueType = request.UniqueType,
|
||||
UniqueValue = x,
|
||||
DeviceType = request.Type
|
||||
}).ToList());
|
||||
await _dbContext.InsertAsync(request.Codes.Select(x => new DataPermissionEntity
|
||||
{
|
||||
AssignValue = request.AssignValue,
|
||||
UniqueType = request.UniqueType,
|
||||
UniqueValue = x,
|
||||
DeviceType = request.Type
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(string assignValue, DeviceAssignmentTypeEnumType uniqueType, DeviceTypeEnumType type)
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(string assignValue, DataPermissionAssignmentEnumType uniqueType, DeviceTypeEnumType? type)
|
||||
{
|
||||
return await _dbContext.Queryable<DataPermissionEntity>()
|
||||
.Where(x => x.AssignValue == assignValue)
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.UniqueType == uniqueType)
|
||||
.Where(x => x.DeviceType == type)
|
||||
.WhereIF(type.HasValue, x => x.DeviceType == type)
|
||||
.Select(x => x.UniqueValue)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user