sunpengfei
2025-08-07 7620ece055c34a13c868d846f4f34cd0a0fb3c4d
FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -30,11 +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 TaskInfoQueryable.GetQueryable(rep, q => q.Where(it => it.Id == request.Id))
            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>
@@ -45,8 +54,61 @@
        /// <returns></returns>
        public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken)
        {
            //return request.PageModel.GetPagedListAsync<TaskInfo, >()
            throw new Exception();
            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);
        }
    }
}