From c0a4b045720e83f8e52ffc110b773aeece590b55 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 07 八月 2025 18:26:29 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/ApiFlexJob --- FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 85 ++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 81 insertions(+), 4 deletions(-) diff --git a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs index adc9d1b..fdc31e5 100644 --- a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -1,5 +1,6 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Furion.FriendlyException; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; @@ -16,8 +17,10 @@ /// </summary> public class TaskInfoQueryHandler( IRepository<TaskInfo> rep - ) - : IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult> + ) : + IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>, + IRequestHandler<GetTaskInfosQuery, PagedListQueryResult<GetTaskInfosQueryResultItem>> + { private readonly IRepository<TaskInfo> rep = rep; @@ -27,11 +30,85 @@ /// <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 TaskInfoQueryable.GetQueryable(rep, q => q.Where(it => it.Id == request.Id)) + 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> + /// 鏌ヨ浠诲姟鍒嗛〉鍒楄〃 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) + { + 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