using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic.Device.Services.Implements;
public class DevicePermissionManuallyService : IDevicePermissionManuallyService
{
private readonly IDbContext _dbContext;
public DevicePermissionManuallyService(IDbContext dbContext)
{
_dbContext = dbContext;
}
///
public async Task> GetPageAsync(PageDto requestDto)
{
return await _dbContext.Queryable()
.LeftJoin((x, d) => x.DeviceCode == d.Code)
.LeftJoin((x, d, g) => x.UserNo == g.No)
.WhereIF(requestDto.Search.IsPresent(), (x, d, g) => g.Code == requestDto.Search || g.Name.Contains(requestDto.Search))
.Select((x, d, g) => new DevicePermissionManuallyResponse
{
Id = x.Id,
DeviceCode = x.DeviceCode,
DeviceUniqueNo = d.UniqueNo,
DeployPlace = d.DeployPlace,
UserNo = x.UserNo,
UserName = g.Name
})
.ToPageListAsync(requestDto);
}
///
public async Task AddAsync(DevicePermissionManuallyAddRequest request)
{
var device = await _dbContext.Queryable().Where(x => x.Code == request.DeviceCode).SingleAsync();
device.ThrowIfNull("设备不存在");
var gainfo = await _dbContext.Queryable().Where(x => x.No == request.UserNo).SingleAsync();
gainfo.ThrowIfNull("人员不存在");
await _dbContext.InsertAsync(new DevicePermissionManuallyEntity
{
DeviceCode = request.DeviceCode,
UserNo = request.UserNo
});
await _dbContext.InsertAsync(new DeviceTaskEntity
{
Type = DeviceTaskEnumType.Add,
DeviceType = device.Type,
UserId = null,
UserNo = request.UserNo,
DeviceUniqueNo = device.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
ResultMessage = null,
Source = "手动分配额外权限",
Priority = 0,
TenantId = device.TenantId
});
}
///
public async Task DeleteAsync(long id)
{
var data = await _dbContext.Queryable().Where(x => x.Id == id).SingleAsync();
data.ThrowIfNull("数据不存在");
var device = await _dbContext.Queryable().Where(x => x.Code == data.DeviceCode).SingleAsync();
if (device != null)
{
var userNo = await _dbContext.Queryable().Where(x => x.No == data.UserNo).Select(x => x.No).SingleAsync();
if (userNo.IsPresent())
{
await _dbContext.InsertAsync(new DeviceTaskEntity
{
Type = DeviceTaskEnumType.Delete,
DeviceType = device.Type,
UserId = null,
UserNo = userNo,
DeviceUniqueNo = device.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Version = 0,
ResultMessage = null,
Source = "手动分配额外权限",
Priority = 0,
TenantId = device.TenantId
});
}
}
await _dbContext.DeleteAsync(data);
}
}