From 67e4de568bcc92a43040d6092c3e79f808c5fe35 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 13 八月 2025 15:56:26 +0800 Subject: [PATCH] pref:开发 --- FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 58 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 12 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index f2c155d..50ab0f0 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -20,6 +20,7 @@ IRepository<DictionaryData> repDictionaryData ) : IRequestHandler<GetTaskInfoQuery, GetTaskInfoQueryResult>, + IRequestHandler<GetOpenTaskInfosQuery, GetTaskInfosQueryResult>, IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>, IRequestHandler<GetPersonalApplyTaskInfosQuery, GetPersonalApplyTaskInfosQueryResult>, IRequestHandler<GetPersonalHireTaskInfosQuery, GetPersonalHireTaskInfosQueryResult>, @@ -37,6 +38,7 @@ /// <returns></returns> public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { + var now = DateTime.Now; var logier = JwtUtils.GetCurrentLogier(); var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) @@ -48,15 +50,52 @@ .CountAsync(it => it.TaskInfoId == model.Id); if (logier != null && logier.Type == EnumUserType.Personal) { - model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + var taskUser = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() .Include(it => it.EnterpriseEmployee) .Where(it => it.TaskInfoId == model.Id && it.EnterpriseEmployee.UserId == logier.Id) - .Select(it => it.EnterpriseEmployee.HireStatus) + .Select(it => new + { + it.Id, + it.EnterpriseEmployee.HireStatus, + it.EnterpriseEmployee.UserSignContractStatus + }) .FirstOrDefaultAsync(); + if (taskUser != null) + { + model.HireStatus = taskUser.HireStatus; + model.ApplyButton = taskUser.HireStatus == EnumTaskUserHireStatus.Wait + ? GetTaskInfoQueryResultApplyButton.WaitHire + : taskUser.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait + ? GetTaskInfoQueryResultApplyButton.WaitSignContract + : null; + model.HireButton = now <= model.EndTime + ? GetTaskInfoQueryResultHireButton.InProcess + : GetTaskInfoQueryResultHireButton.Completed; + if (model.HireButton == GetTaskInfoQueryResultHireButton.InProcess && model.BeginTime <= now) + { + var submit = await rep.Change<TaskInfoUserSubmit>().AsQueryable().AsNoTracking() + .AnyAsync(it => it.TaskInfoUserId == taskUser.Id && it.CheckReceiveStatus >= EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive); + if (!submit) + { + model.HireButton = GetTaskInfoQueryResultHireButton.ApplyCheckReceive; + } + } + } model.IsCollected = await rep.Change<UserTaskCollect>().AsQueryable().AsNoTracking() .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id); } return model; + } + + /// <summary> + /// 鏌ヨ寮�鏀句换鍔″垎椤靛垪琛� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetTaskInfosQueryResult> Handle(GetOpenTaskInfosQuery request, CancellationToken cancellationToken) + { + return Handle(request.Adapt<GetTaskInfosQuery>(), cancellationToken); } /// <summary> @@ -79,7 +118,7 @@ } if (request.BeginTime.HasValue && request.EndTime.HasValue) { - q = q.Where(it => request.BeginTime <= it.BeginTime && it.BeginTime <= request.EndTime); + q = q.Where(it => request.BeginTime <= it.CreatedTime && it.CreatedTime <= request.EndTime); } if (request.CityCode.IsNotNull()) { @@ -217,6 +256,7 @@ BenefitCode = it.BenefitCode, BenefitContent = it.Benefit.Content }).ToList(), + AddressName = it.AddressName, Status = it.TaskInfoUsers.Any(it => it.EnterpriseEmployee.UserId == logier.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait) @@ -239,7 +279,6 @@ var q = TaskInfoRepository.GetQueryable(rep, true, logier).Where(it => it.TaskInfoUsers.Any(tu => tu.EnterpriseEmployee.UserId == logier.Id - && tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass && tu.ArrangeStatus == EnumTaskUserArrangeStatus.Complete)); if (request.Status.HasValue) { @@ -255,14 +294,6 @@ break; } } - else - { - q = q.Where(it => - it.TaskInfoUsers.Any(tu => - tu.EnterpriseEmployee.UserId == logier.Id - && (tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait - || tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait))); - } var s = q.Select(it => new GetPersonalHireTaskInfosQueryResultItem { Id = it.Id, @@ -277,6 +308,7 @@ BenefitCode = it.BenefitCode, BenefitContent = it.Benefit.Content }).ToList(), + AddressName = it.AddressName, Status = now <= it.EndTime ? GetPersonalHireTaskInfosQueryStatus.InProcess : GetPersonalHireTaskInfosQueryStatus.Completed @@ -314,8 +346,10 @@ BenefitCode = it.BenefitCode, BenefitContent = it.Benefit.Content }).ToList(), + AddressName = it.AddressName, }); return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken); } + } } -- Gitblit v1.9.1