106 lines
3.6 KiB
C#
106 lines
3.6 KiB
C#
using Dlhis.Basic.Device.Request;
|
|
using Dlhis.Entity.Device.Entities;
|
|
using Dlhis.Entity.Sys.Entities;
|
|
using Dlhis.Entity.Sys.Enums;
|
|
using Kurisu.SqlSugar.Services;
|
|
|
|
namespace Dlhis.Basic.Device.Services.Implements;
|
|
|
|
public class DevicePermissionService : IDevicePermissionService
|
|
{
|
|
private readonly IDbContext _dbContext;
|
|
|
|
public DevicePermissionService(IDbContext dbContext)
|
|
{
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
public async Task AssignmentAsync(List<DevicePermissionSaveReuqest> reuqests)
|
|
{
|
|
foreach (var item in reuqests)
|
|
{
|
|
var permissions = await _dbContext.Queryable<DevicePermissionEntity>()
|
|
.Where(x => x.UniqueType == item.UniqueType)
|
|
.Where(x => x.UniqueValue == item.UniqueValue)
|
|
.Where(x => x.UserNo == item.UserNo)
|
|
.ToListAsync();
|
|
|
|
//todo 差异数据
|
|
await _dbContext.Client.Deleteable(permissions).ExecuteCommandAsync();
|
|
|
|
await _dbContext.InsertAsync(new DevicePermissionEntity
|
|
{
|
|
UserNo = item.UserNo,
|
|
UniqueType = item.UniqueType,
|
|
UniqueValue = item.UniqueValue,
|
|
});
|
|
}
|
|
}
|
|
|
|
public async Task<List<Guid>> GetAssignmentsAsync(string userNo, DeviceAssignmentTypeEnumType? uniqueType)
|
|
{
|
|
var assignments = await _dbContext.Queryable<DevicePermissionEntity>()
|
|
.WhereIF(uniqueType.HasValue, x => x.UniqueType == uniqueType)
|
|
.Where(x => x.UserNo == userNo)
|
|
.Select(x => x.UniqueValue)
|
|
.ToListAsync();
|
|
|
|
return assignments;
|
|
}
|
|
|
|
public async Task<List<Guid>> GetAssignDeviceCodesAsync(string userNo)
|
|
{
|
|
var groupCodes = await GetAssignmentsAsync(userNo, DeviceAssignmentTypeEnumType.Group);
|
|
var deviceGroups = await _dbContext.Queryable<DeviceGroupEntity>().ToListAsync();
|
|
|
|
return null;
|
|
//var deviceCodes = await GetAssignmentsAsync(userNo, DeviceAssignmentTypeEnumType.Device);
|
|
|
|
|
|
//var permissionCodes = await _dbContext.Queryable<MenuPermissionEntity>()
|
|
// .Where(x => x.UniqueType == uniqueType)
|
|
// .Where(x => x.UniqueValue == uniqueData)
|
|
// .Select(x => x.Code)
|
|
// .ToListAsync();
|
|
|
|
//var menus = await GetListAsync(PlatformEnumType.PCAdmin);
|
|
|
|
//foreach (var menu in menus)
|
|
//{
|
|
// if (menu.Items.Any())
|
|
// {
|
|
// var codes = RecursionHandler(menu.Items, permissionCodes);
|
|
// permissionCodes.RemoveAll(x => codes.Contains(x));
|
|
// }
|
|
//}
|
|
|
|
//return permissionCodes;
|
|
|
|
//static List<string> RecursionHandler(List<MenuResponse> menus, List<string> innerPermissions)
|
|
//{
|
|
// var codes = new HashSet<string>();
|
|
// foreach (var menu in menus)
|
|
// {
|
|
// if (menu.Items.Any())
|
|
// {
|
|
// var innerPermissionCodes = RecursionHandler(menu.Items, innerPermissions);
|
|
// foreach (var item in innerPermissionCodes)
|
|
// {
|
|
// codes.Add(item);
|
|
// }
|
|
// }
|
|
|
|
// if (!innerPermissions.Contains(menu.Code))
|
|
// {
|
|
// foreach (var item in menu.Items.Select(x => x.Code))
|
|
// {
|
|
// codes.Add(item);
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// return codes.ToList();
|
|
//}
|
|
}
|
|
}
|