Files
jinko.yikatong/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs

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