From 7620ece055c34a13c868d846f4f34cd0a0fb3c4d Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 18:26:28 +0800
Subject: [PATCH] feat:任务开发

---
 FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs |   73 ++++++++++++++++++++++++++++++++----
 1 files changed, 65 insertions(+), 8 deletions(-)

diff --git a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs
index 7b635b7..fdc31e5 100644
--- a/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs
+++ b/FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -30,12 +30,20 @@
         /// <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 TaskInfoRepository.GetQueryable(rep)
+            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>
@@ -46,12 +54,61 @@
         /// <returns></returns>
         public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken)
         {
-            return request.PageModel.GetPagedListAsync<TaskInfo, GetTaskInfosQueryResultItem>(
-                q =>
-                {
-                    q = TaskInfoRepository.GetQueryable(rep);
-                    return q;
-                });
+            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