feat 数据权限
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
using Dlhis.Sys.DataPermission.Request;
|
||||
using Dlhis.Sys.DataPermission.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Dlhis.Sys.DataPermission.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// 数据权限
|
||||
/// </summary>
|
||||
[Authorize]
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class DataPermissionsController : ControllerBase
|
||||
{
|
||||
private readonly IDataPermissionService _dataPermissionService;
|
||||
|
||||
public DataPermissionsController(IDataPermissionService dataPermissionService)
|
||||
{
|
||||
_dataPermissionService = dataPermissionService;
|
||||
}
|
||||
|
||||
[HttpPost("save")]
|
||||
public async Task SaveAsync(DataPermissionSaveRequest request)
|
||||
{
|
||||
await _dataPermissionService.SaveAsync(request);
|
||||
}
|
||||
|
||||
|
||||
[HttpGet("assignments")]
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(string assignValue, [EnumDataType(typeof(DeviceAssignmentTypeEnumType))] DeviceAssignmentTypeEnumType uniqueType)
|
||||
{
|
||||
return await _dataPermissionService.GetAssignmentsAsync(assignValue, uniqueType);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
|
||||
namespace Dlhis.Sys.DataPermission.Request;
|
||||
|
||||
public class DataPermissionSaveRequest : IValidatableObject
|
||||
{
|
||||
[Required]
|
||||
public string AssignValue { get; set; }
|
||||
|
||||
[EnumDataType(typeof(DeviceAssignmentTypeEnumType))]
|
||||
public DeviceAssignmentTypeEnumType UniqueType { get; set; }
|
||||
|
||||
public List<Guid> Codes { get; set; } = new();
|
||||
|
||||
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
if (UniqueType == DeviceAssignmentTypeEnumType.BusinessPlace)
|
||||
{
|
||||
yield return new ValidationResult("不支持营业点分配", new[] { nameof(UniqueType) });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
using Dlhis.Sys.DataPermission.Request;
|
||||
|
||||
namespace Dlhis.Sys.DataPermission.Services;
|
||||
|
||||
public interface IDataPermissionService : IScopeDependency
|
||||
{
|
||||
Task SaveAsync(DataPermissionSaveRequest request);
|
||||
|
||||
Task<List<Guid>> GetAssignmentsAsync(string assignValue, DeviceAssignmentTypeEnumType uniqueType);
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using Dlhis.Entity.Sys.Entities;
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
using Dlhis.Sys.DataPermission.Request;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
||||
|
||||
namespace Dlhis.Sys.DataPermission.Services.Implements;
|
||||
|
||||
public class DataPermissionService : IDataPermissionService
|
||||
{
|
||||
private readonly IDbContext _dbContext;
|
||||
|
||||
public DataPermissionService(IDbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task SaveAsync(DataPermissionSaveRequest request)
|
||||
{
|
||||
var data = await _dbContext.Queryable<DataPermissionEntity>()
|
||||
.Where(x => x.AssignValue == request.AssignValue)
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.UniqueType == request.UniqueType)
|
||||
.ToListAsync();
|
||||
|
||||
await _dbContext.DeleteReallyAsync(data);
|
||||
|
||||
await _dbContext.InsertAsync(request.Codes.Select(x => new DataPermissionEntity
|
||||
{
|
||||
AssignType = AssignTypeEnumType.User,
|
||||
AssignValue = request.AssignValue,
|
||||
UniqueType = request.UniqueType,
|
||||
UniqueValue = x
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
public async Task<List<Guid>> GetAssignmentsAsync(string assignValue, DeviceAssignmentTypeEnumType uniqueType)
|
||||
{
|
||||
return await _dbContext.Queryable<DataPermissionEntity>()
|
||||
.Where(x => x.AssignValue == assignValue)
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.UniqueType == uniqueType)
|
||||
.Select(x => x.UniqueValue)
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="DataPermission\Response\" />
|
||||
<Folder Include="Server\Request\" />
|
||||
<Folder Include="Server\Response\" />
|
||||
<Folder Include="Server\Services\Implements\" />
|
||||
|
||||
Reference in New Issue
Block a user