72 lines
4.3 KiB
C#
72 lines
4.3 KiB
C#
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
|
|
using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
|
|
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
|
|
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
|
|
using SJZY.Track.Domain.Dtos.Common;
|
|
using SJZY.Track.Domain.Dtos.TrackPush;
|
|
using SJZY.Track.Domain.VEntities;
|
|
using SJZY.Track.Repository.VData.Entitys;
|
|
|
|
namespace SJZY.Track.Infrastructure.Repositories;
|
|
|
|
public class TrackPushConfigRepository : BasicRepository<TrackPushConfigEntity>, ITrackPushConfigRepository,
|
|
IScopedDependency
|
|
{
|
|
public async Task<UnifyPageResultDto<GetTrackPushConfigPageOutputVO>> GetPageAsync(KeywordsInputVO input)
|
|
{
|
|
return await AsQueryable()
|
|
.LeftJoin<VSystemEntity>((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted)
|
|
.LeftJoin<VExternalSubjectEntity>((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
|
|
.LeftJoin<TrackTemplateEntity>((trackPush, system, externalSubject, template) => SqlFunc.SplitIn(trackPush.TrackTemplateId, template.Id.ToString()) && !template.IsDeleted)
|
|
.Filter(null, true)
|
|
.Where(trackPush => !trackPush.IsDeleted)
|
|
.WhereIF(input.SubSystemId.HasValue, trackPush => trackPush.SubSystemId == input.SubSystemId)
|
|
.WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (trackPush, system, externalSubject, template) => externalSubject.Abbreviation.Contains(input.Keywords) || externalSubject.Name.Contains(input.Keywords) || template.Name.Contains(input.Keywords))
|
|
.OrderByDescending(trackPush => trackPush.CreateTime)
|
|
.Select((trackPush, system, externalSubject, template) => new GetTrackPushConfigPageOutputVO
|
|
{
|
|
Id = trackPush.Id,
|
|
SubSystem = system.CnName,
|
|
CustomName = externalSubject.Abbreviation,
|
|
TrackTemplate = SqlFunc.Subqueryable<TrackTemplateEntity>()
|
|
.Where(template => SqlFunc.SplitIn(trackPush.TrackTemplateId, template.Id.ToString()) && !template.IsDeleted)
|
|
.SelectStringJoin(template => template.Name, ","),
|
|
CreateTime = trackPush.CreateTime
|
|
})
|
|
.Distinct()
|
|
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
|
}
|
|
|
|
public async Task<UnifyPageResultDto<GetTrackPushContentPageOutputVO>> GetContentPageAsync(GetTrackPushContentPageInputVO input)
|
|
{
|
|
return await Context.Queryable<TrackPushContentConfigEntity>()
|
|
.InnerJoin<TrackContentEntity>((pushContent, trackContent) => pushContent.TrackContentId == trackContent.Id)
|
|
.Where(pushContent => pushContent.TrackPushConfigId == input.TrackPushConfigId)
|
|
.OrderBy((pushContent, trackContent) => pushContent.Sort)
|
|
.Select((pushContent, trackContent) => new GetTrackPushContentPageOutputVO
|
|
{
|
|
Id = pushContent.Id,
|
|
Sort = pushContent.Sort
|
|
}, true)
|
|
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
|
}
|
|
|
|
public async Task<GetTrackPushConfigDetailOutputVO> GetDetailAsync(int id)
|
|
{
|
|
return await AsQueryable()
|
|
.LeftJoin<VSystemEntity>((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted)
|
|
.LeftJoin<VExternalSubjectEntity>((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
|
|
.LeftJoin<VServiceProviderEntity>((trackPush, system, externalSubject, service) => trackPush.ServiceProviderId == service.Id && !service.IsDeleted)
|
|
.InnerJoin<TrackPushPullParamsConfigEntity>((trackPush, system, externalSubject, service, paramsConfig) => trackPush.Id == paramsConfig.PullOrPushConfigId && paramsConfig.IsPush && !paramsConfig.IsDeleted)
|
|
.Filter(null, true)
|
|
.Where(trackPush => trackPush.Id == id && !trackPush.IsDeleted)
|
|
.Select((trackPush, system, externalSubject, service, paramsConfig) => new GetTrackPushConfigDetailOutputVO
|
|
{
|
|
Id = trackPush.Id,
|
|
SubSystem = system.CnName,
|
|
CustomName = externalSubject.Abbreviation,
|
|
ServiceProvider = service.Name,
|
|
}, true)
|
|
.SingleAsync();
|
|
}
|
|
} |