track/src/SJZY.Track.Repository/Repositories/TrackNodeRepository.cs
2024-08-20 18:18:57 +08:00

82 lines
3.5 KiB
C#

using SJZY.Track.Domain.Aggregates.TrackNodeAggregate;
using SJZY.Track.Domain.Dtos.TrackNode;
using SJZY.Track.Domain.VEntities;
namespace SJZY.Track.Repository.Repositories;
public class TrackNodeRepository : BasicRepository<TrackNodeEntity>, ITrackNodeRepository, IScopedDependency
{
public async Task<UnifyPageResultDto<TrackNodeDto>> GetPageList(TrackNodePageDto queryParam)
{
var result = await Context.Queryable<TrackNodeEntity>()
.LeftJoin<VUserEntity>((t, u1) => t.CreateUserId == u1.Id)
.LeftJoin<VUserEntity>((t, u1, u2) => t.UpdateUserId == u2.Id)
.LeftJoin<VSystemEntity>((t, u1, u2, u3) => t.SubSystemId == u3.Id)
.Where((t, u1, u2) => !t.IsDeleted && !u1.IsDeleted && !u2.IsDeleted)
.WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord),
(t, u1, u2) => t.NodeName!.Contains(queryParam.KeyWord) || t.NodeEnName!.Contains(queryParam.KeyWord))
.WhereIF(queryParam.SystemId.HasValue, (t, u1, u2) => t.SubSystemId == queryParam.SystemId.Value)
.Select((t, u1, u2, u3) => new TrackNodeDto()
{
Id = t.Id,
NodeName = t.NodeName,
NodeEnName = t.NodeEnName,
SubSystemId = t.SubSystemId,
UpdateTime = t.UpdateTime,
CreateTime = t.CreateTime,
UpdateUserId = t.UpdateUserId,
UpdateUserName = u2.Name,
CreateUserName = u1.Name,
SystemName = u3.CnName
}).ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize);
return result;
}
public async Task<UnifyPageResultDto<TrackNodeDicDto>> GetPageDicList(TrackNodePageDto queryParam)
{
var result = await Context.Queryable<TrackNodeEntity>()
.Where((t) => !t.IsDeleted)
.WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord),
(t) => t.NodeName!.Contains(queryParam.KeyWord) || t.NodeEnName!.Contains(queryParam.KeyWord))
.WhereIF(queryParam.SystemId.HasValue, (t) => t.SubSystemId == queryParam.SystemId.Value)
.Select(t => new TrackNodeDicDto()
{
Id = t.Id,
NodeName = t.NodeName,
EnName = t.NodeEnName,
})
.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize);
return result;
}
public Task<int> DeleteById(long inputId)
{
return Context.Deleteable<TrackNodeEntity>().Where(val => val.Id == inputId).ExecuteCommandAsync();
}
public async Task<TrackNodeDto> GetDetail(long id)
{
var result = await Context.Queryable<TrackNodeEntity>()
.LeftJoin<VUserEntity>((t, u1) => t.CreateUserId == u1.Id)
.LeftJoin<VUserEntity>((t, u1, u2) => t.UpdateUserId == u2.Id)
.LeftJoin<VSystemEntity>((t, u1, u2, u3) => t.SubSystemId == u3.Id)
.Where((t, u1, u2) => !t.IsDeleted && !u1.IsDeleted && !u2.IsDeleted && t.Id == id)
.Select((t, u1, u2, u3) => new TrackNodeDto()
{
Id = t.Id,
NodeName = t.NodeName,
NodeEnName = t.NodeEnName,
SubSystemId = t.SubSystemId,
UpdateTime = t.UpdateTime,
CreateTime = t.CreateTime,
UpdateUserId = t.UpdateUserId,
UpdateUserName = u2.Name,
CreateUserName = u1.Name,
SystemName = u3.CnName
}).FirstAsync();
return result;
}
}