From 7620ece055c34a13c868d846f4f34cd0a0fb3c4d Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 07 八月 2025 18:26:28 +0800 Subject: [PATCH] feat:任务开发 --- FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 73 ++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 8 deletions(-) diff --git a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 7b635b7..fdc31e5 100644 --- a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -30,12 +30,20 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) + public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { - return TaskInfoRepository.GetQueryable(rep) + var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) .ProjectToType<GetTaskInfoQueryResult>() .FirstOrDefaultAsync(cancellationToken); + model.EnterpriseName = await rep.Change<Enterprise>().AsQueryable().AsNoTracking() + .Where(it => it.EnterpriseAuthId == model.EnterpriseId) + .Select(it => it.EnterpriseAuth.EnterpriseName) + .FirstOrDefaultAsync(); + model.TaskCount = await rep.AsQueryable().AsNoTracking() + .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.Stopped) + .CountAsync(); + return model; } /// <summary> @@ -46,12 +54,61 @@ /// <returns></returns> public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) { - return request.PageModel.GetPagedListAsync<TaskInfo, GetTaskInfosQueryResultItem>( - q => - { - q = TaskInfoRepository.GetQueryable(rep); - return q; - }); + var q = TaskInfoRepository.GetQueryable(rep); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => it.Name.Contains(request.Keywords)); + } + if (request.Time.HasValue) + { + q = q.Where(it => it.BeginTime <= request.Time && request.Time <= it.EndTime); + } + if (request.CityCode.IsNotNull()) + { + q = q.Where(it => it.CityCode == request.CityCode); + } + if (request.SettlementCycle.HasValue) + { + q = q.Where(it => it.SettlementCycle == request.SettlementCycle); + } + if (request.BenefitCodes.IsNotNull()) + { + q = q.Where(it => it.Benefits.Any(b => request.BenefitCodes.Contains(b.BenefitCode))); + } + if (request.GenderLimit.HasValue) + { + q = q.Where(it => it.GenderLimit == request.GenderLimit); + } + if (request.Status.HasValue) + { + q = q.Where(it => it.Status == request.Status); + } + if (request.ReleaseStatus.HasValue) + { + q = q.Where(it => it.ReleaseStatus == request.ReleaseStatus); + } + if (request.RecommendStatus.HasValue) + { + q = q.Where(it => it.RecommendStatus == request.RecommendStatus); + } + var s = from t in q + join tu in rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() on t.Id equals tu.TaskInfoId into tug + select new GetTaskInfosQueryResultItem + { + Id = t.Id, + Name = t.Name, + Code = t.Code, + BillingMethod = t.BillingMethod, + ServiceFee = t.ServiceFee, + SettlementCycle = t.SettlementCycle, + GenderLimit = t.GenderLimit, + UserCount = tug.Count(), + Status = t.Status, + BeginTime = t.BeginTime, + EndTime = t.EndTime, + ReleaseStatus = t.ReleaseStatus + }; + return request.PageModel.GetPagedListAsync(s, cancellationToken); } } } -- Gitblit v1.9.1