From 28db30e5a458ee012959269d50e16eadaa0c5d12 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 05 九月 2025 15:10:09 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 110 insertions(+), 5 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 8002765..e237a65 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -24,7 +24,10 @@ IRequestHandler<GetTaskInfosQuery, GetTaskInfosQueryResult>, IRequestHandler<GetPersonalApplyTaskInfosQuery, GetPersonalApplyTaskInfosQueryResult>, IRequestHandler<GetPersonalHireTaskInfosQuery, GetPersonalHireTaskInfosQueryResult>, - IRequestHandler<GetPersonalCancelTaskInfosQuery, GetPersonalCancelTaskInfosQueryResult> + IRequestHandler<GetPersonalCancelTaskInfosQuery, GetPersonalCancelTaskInfosQueryResult>, + IRequestHandler<GetSettlementTasksQuery, GetSettlementTasksQueryResult>, + IRequestHandler<GetSettlementTaskQuery, GetSettlementTaskQueryResult>, + IRequestHandler<GetTaskSelectQuery, List<SelectOption<Guid, GetTaskSelectQueryOption>>> { private readonly IRepository<TaskInfo> rep = rep; @@ -57,21 +60,25 @@ { it.Id, it.HireStatus, + it.EnterpriseEmployeeId, it.EnterpriseEmployee.UserSignContractStatus }) .FirstOrDefaultAsync(); if (taskUser != null) { + model.EnterpriseEmployeeId = taskUser.EnterpriseEmployeeId; model.HireStatus = taskUser.HireStatus; model.ApplyButton = taskUser.HireStatus == EnumTaskUserHireStatus.Wait ? GetTaskInfoQueryResultApplyButton.WaitHire : taskUser.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait ? GetTaskInfoQueryResultApplyButton.WaitSignContract : null; - model.HireButton = now <= model.EndTime + model.HireButton = now < model.BeginTime + ? GetTaskInfoQueryResultHireButton.Wait + : model.BeginTime <= now && now <= model.EndTime ? GetTaskInfoQueryResultHireButton.InProcess : GetTaskInfoQueryResultHireButton.Completed; - if (model.HireButton == GetTaskInfoQueryResultHireButton.InProcess && model.BeginTime <= now) + if (model.HireButton == GetTaskInfoQueryResultHireButton.InProcess) { var submit = await rep.Change<TaskInfoUserSubmit>().AsQueryable().AsNoTracking() .AnyAsync(it => it.TaskInfoUserId == taskUser.Id && it.CheckReceiveStatus >= EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive); @@ -178,6 +185,8 @@ Id = t.Id, Name = t.Name, Code = t.Code, + EnterpriseName = t.Enterprise.EnterpriseName, + UserName = t.Enterprise.Users.Where(u => u.Id == t.CreatedUserId).Select(u => u.UserName).FirstOrDefault(), BillingMethod = t.BillingMethod, ServiceFee = t.ServiceFee, SettlementCycle = t.SettlementCycle, @@ -208,7 +217,15 @@ CheckReceiveStatus = t.CheckReceiveStatus, CreatedTime = t.CreatedTime, RecommendStatus = t.RecommendStatus, + RecommendTime = t.RecommendTime, SettlementStatus = t.SettlementStatus, + HireStatus = logier != null && logier.Type == EnumUserType.Personal + ? t.TaskInfoUsers + .Where(tu => tu.EnterpriseEmployee.UserId == logier.Id) + .Select(tu => tu.HireStatus as EnumTaskUserHireStatus?) + .FirstOrDefault() + : null, + }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); result.ObjectData = count; @@ -295,8 +312,11 @@ { switch (request.Status.Value) { + case GetPersonalHireTaskInfosQueryStatus.Wait: + q = q.Where(it => now < it.BeginTime); + break; case GetPersonalHireTaskInfosQueryStatus.InProcess: - q = q.Where(it => now <= it.EndTime); + q = q.Where(it => it.BeginTime <= now && now <= it.EndTime); break; case GetPersonalHireTaskInfosQueryStatus.Completed: q = q.Where(it => it.EndTime < now); @@ -320,7 +340,9 @@ BenefitContent = it.Benefit.Content }).ToList(), AddressName = it.AddressName, - Status = now <= it.EndTime + Status = now < it.BeginTime + ? GetPersonalHireTaskInfosQueryStatus.Wait + : it.BeginTime <= now && now <= it.EndTime ? GetPersonalHireTaskInfosQueryStatus.InProcess : GetPersonalHireTaskInfosQueryStatus.Completed }); @@ -362,5 +384,88 @@ return await request.PageModel.GetPagedListAsync<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>(s, cancellationToken); } + /// <summary> + /// 鏌ヨ缁撶畻浠诲姟鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetSettlementTasksQueryResult> Handle(GetSettlementTasksQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = TaskInfoRepository.GetQueryable(rep, true, logier) + .Where(it => it.SettlementOrderStatus.HasValue); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.Name.Contains(request.Keywords) + || it.Code.Contains(request.Keywords)); + } + if (request.SettlementOrderStatus.HasValue) + { + q = q.Where(it => it.SettlementOrderStatus == request.SettlementOrderStatus); + } + if (request.SettlementStatus.HasValue) + { + q = q.Where(it => it.SettlementStatus == request.SettlementStatus); + } + var s = q + .Select(it => new GetSettlementTasksQueryResultItem + { + Id = it.Id, + Name = it.Name, + Code = it.Code, + SettlementOrderStatus = it.SettlementOrderStatus, + SettlementOrderName = it.SettlementOrderName, + SettlementOrderTime = it.SettlementOrderTime, + ActualSettlementAmount = it.ActualSettlementAmount, + SettlementAmount = it.SettlementAmount, + SettlementStatus = it.SettlementStatus, + SettlementTime = it.SettlementTime, + SettlementRemark = it.SettlementRemark, + SettlementUserCount = it.SettlementUserCount + }); + return await request.PageModel.GetPagedListAsync<GetSettlementTasksQueryResult, GetSettlementTasksQueryResultItem>(s, cancellationToken); + } + + /// <summary> + /// 鏌ヨ缁撶畻鍗曡鎯� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetSettlementTaskQueryResult> Handle(GetSettlementTaskQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var model = TaskInfoRepository.GetQueryable(rep, true, logier) + .Where(it => it.Id == request.Id) + .GetDetail<TaskInfo, GetSettlementTaskQueryResult>(); + return model; + } + + /// <summary> + /// 鏌ヨ浠诲姟閫夋嫨鍣ㄦ暟鎹� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<SelectOption<Guid, GetTaskSelectQueryOption>>> Handle(GetTaskSelectQuery request, CancellationToken cancellationToken) + { + return await request.GetSelect<TaskInfo, Guid, GetTaskSelectQueryOption>( + it => it.Id, + it => it.Name, + q => + { + q = TaskInfoRepository.GetQueryable(rep, true); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.Code.Contains(request.Keywords) + || it.Name.Contains(request.Keywords)); + } + return q; + }, + cancellationToken); + } } } -- Gitblit v1.9.1