feat 数据权限支持用户组

This commit is contained in:
2025-01-08 19:34:09 +08:00
parent 12dad0b8b4
commit c573841849
12 changed files with 123 additions and 55 deletions

View File

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

View File

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

View File

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

View File

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