From aa7fd6fbf2ce1a674930763e8c24a7c2a0b4d0af Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 12 八月 2025 10:22:37 +0800 Subject: [PATCH] fix:bug --- FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 81 +++++++++++++++++++++++++++++++++++----- 1 files changed, 70 insertions(+), 11 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index bf22bf4..5b1b297 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -16,13 +16,15 @@ /// 浠诲姟鏌ヨ澶勭悊鍣� /// </summary> public class TaskInfoQueryHandler( - IRepository<TaskInfo> rep + IRepository<TaskInfo> rep, + IRepository<DictionaryData> repDictionaryData ) : IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>, - IRequestHandler<GetTaskInfosQuery, PagedListQueryResult<GetTaskInfosQueryResultItem>> + IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult> { private readonly IRepository<TaskInfo> rep = rep; + private readonly IRepository<DictionaryData> repDictionaryData = repDictionaryData; /// <summary> /// 鏌ヨ浠诲姟璇︽儏 @@ -32,13 +34,22 @@ /// <returns></returns> public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { + var logier = JwtUtils.GetCurrentLogier(); var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) - .ProjectToType<GetTaskInfoQueryResult>() - .FirstOrDefaultAsync(cancellationToken); + .GetDetail<TaskInfo, GetTaskInfoQueryResult>(cancellationToken); model.TaskCount = await rep.AsQueryable().AsNoTracking() - .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.Stopped) + .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.InProcess) .CountAsync(); + model.ApplyCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .CountAsync(it => it.TaskInfoId == model.Id); + if (logier != null && logier.Type == EnumUserType.Personal) + { + model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .Where(it => it.TaskInfoId == model.Id && it.UserId == logier.Id) + .Select(it => it.HireStatus) + .FirstOrDefaultAsync(); + } return model; } @@ -48,12 +59,17 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) + public async Task<GetTaskInfosQueryResult> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) { - var q = TaskInfoRepository.GetQueryable(rep); + var logier = JwtUtils.GetCurrentLogier(); + var q = TaskInfoRepository.GetQueryable(rep, true, logier); if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Name.Contains(request.Keywords)); + } + if (request.EnterpriseId.HasValue) + { + q = q.Where(it => it.EnterpriseId == request.EnterpriseId); } if (request.BeginTime.HasValue && request.EndTime.HasValue) { @@ -75,6 +91,19 @@ { q = q.Where(it => it.GenderLimit == request.GenderLimit); } + if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal) + { + q = q.Where(it => it.TaskInfoUsers.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); + } + + var count = new GetTaskInfosQueryResultObjectData + { + WaitAssignCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.InProcess && it.Status == EnumTaskStatus.Wait), + CompletedAssignCount = await q.CountAsync(it => it.Status == EnumTaskStatus.Complete), + InProcessReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.InProcess), + StoppedReleaseCount = await q.CountAsync(it => it.ReleaseStatus == EnumTaskReleaseStatus.Stopped), + }; + if (request.Status.HasValue) { q = q.Where(it => it.Status == request.Status); @@ -87,8 +116,11 @@ { q = q.Where(it => it.RecommendStatus == request.RecommendStatus); } + if (request.CheckReceiveStatus.HasValue) + { + q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus); + } 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, @@ -97,14 +129,41 @@ BillingMethod = t.BillingMethod, ServiceFee = t.ServiceFee, SettlementCycle = t.SettlementCycle, + Benefits = t.Benefits.Select(it => new GetTaskInfoQueryResultBenefit + { + BenefitCode = it.BenefitCode, + BenefitContent = it.Benefit.Content + }).ToList(), GenderLimit = t.GenderLimit, - UserCount = tug.Count(), + CredentialLimits = t.CredentialLimits.Select(it => new GetTaskInfoQueryResultCredentialLimit + { + TypeCode = it.TypeCode, + TypeContent = it.Type.Content + }).ToList(), + ProvinceCode = t.ProvinceCode, + ProvinceContent = t.Province.Content, + CityCode = t.CityCode, + CityContent = t.City.Content, + AddressName = t.AddressName, + AddressDetail = t.AddressDetail, + Latitude = t.Latitude, + Longitude = t.Longitude, + UserCount = t.TaskInfoUsers.Count(), Status = t.Status, BeginTime = t.BeginTime, EndTime = t.EndTime, - ReleaseStatus = t.ReleaseStatus + ReleaseStatus = t.ReleaseStatus, + CheckReceiveStatus = t.CheckReceiveStatus, + CreatedTime = t.CreatedTime, + RecommendStatus = t.RecommendStatus, + SettlementStatus = t.SettlementStatus, + HireStatus = logier != null + ? t.TaskInfoUsers.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() + : null }; - return request.PageModel.GetPagedListAsync(s, cancellationToken); + var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); + result.ObjectData = count; + return result; } } } -- Gitblit v1.9.1