From fc35150cfe2401b93fa9f4d536b5e151b904bdf7 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 13 八月 2025 16:40:38 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs |   60 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
index f2c155d..9b55d17 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();
-                model.IsCollected = await rep.Change<UserTaskCollect>().AsQueryable().AsNoTracking()
+                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<TaskUserCollect>().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