sunpengfei
2025-08-12 5ce50e40fbe60ff1096fbdd1fbad197febe2b3fa
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -11,11 +11,12 @@
namespace FlexJobApi.FlexJobServer.Application
{
    /// <summary>
    /// 任务雇佣查询处理器
    /// 任务人员查询处理器
    /// </summary>
    public class TaskUserQueryHandler(
        IRepository<TaskInfoUser> rep)
        : IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>
        IRepository<TaskInfoUser> rep) :
        IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>,
        IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>
    {
        private readonly IRepository<TaskInfoUser> rep = rep;
@@ -47,12 +48,64 @@
                    PersonalIdentityContent = it.EnterpriseEmployee.User.PersonalIdentity.Content,
                    EducationalBackgroundCode = it.EnterpriseEmployee.User.EducationalBackgroundCode,
                    EducationalBackgroundContent = it.EnterpriseEmployee.User.EducationalBackground.Content,
                    TaskCount = it.EnterpriseEmployee.User.TaskInfoUsers.Count(tu => tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass),
                    TaskCount = it.EnterpriseEmployee.TaskInfoUsers.Count(tu => tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass),
                    WorkSeniority = it.EnterpriseEmployee.User.WorkSeniority,
                    WorkExperience = it.EnterpriseEmployee.User.WorkExperience,
                    HireStatus = it.EnterpriseEmployee.HireStatus
                });
            return await request.PageModel.GetPagedListAsync<GetTaskUsersQueryResult, GetTaskUsersQueryResultItem>(s, cancellationToken);
        }
        /// <summary>
        /// B端查询人员安排分页列表信息
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetArrangeTaskUsersQueryResult> Handle(GetArrangeTaskUsersQuery request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var q = rep.AsQueryable().AsNoTracking()
                .OrderBy(it => it.CreatedTime)
                .Where(it =>
                    it.TaskInfo.EnterpriseId == logier.EnterpriseId
                    && it.TaskInfoId == request.Id
                    && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass
                    && it.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass
                    && it.EnterpriseEmployee.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass);
            if (request.ArrangeStatus.HasValue)
            {
                q = q.Where(it=>it.ArrangeStatus == request.ArrangeStatus);
            }
            if (request.Keywords.IsNotNull())
            {
                q = q.Where(it =>
                    it.EnterpriseEmployee.User.Name.Contains(request.Keywords)
                    || it.EnterpriseEmployee.User.Identity.Contains(request.Keywords)
                    || it.EnterpriseEmployee.User.PhoneNumber.Contains(request.Keywords));
            }
            var s = q
                .Select(it => new GetArrangeTaskUsersQueryResultItem
                {
                    Id = it.Id,
                    Avatar = it.EnterpriseEmployee.User.Avatar,
                    Name = it.EnterpriseEmployee.User.Name,
                    Identity = it.EnterpriseEmployee.User.Identity,
                    ContactPhoneNumber = it.EnterpriseEmployee.User.ContactPhoneNumber,
                    Gender = it.EnterpriseEmployee.User.Gender,
                    Age = it.EnterpriseEmployee.User.Age,
                    IsReal = it.EnterpriseEmployee.User.IsReal,
                    RealMethod = it.EnterpriseEmployee.User.RealMethod,
                    PersonalIdentityCode = it.EnterpriseEmployee.User.PersonalIdentityCode,
                    PersonalIdentityContent = it.EnterpriseEmployee.User.PersonalIdentity.Content,
                    EducationalBackgroundCode = it.EnterpriseEmployee.User.EducationalBackgroundCode,
                    EducationalBackgroundContent = it.EnterpriseEmployee.User.EducationalBackground.Content,
                    TaskCount = it.EnterpriseEmployee.TaskInfoUsers.Count(tu => tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass),
                    WorkSeniority = it.EnterpriseEmployee.User.WorkSeniority,
                    WorkExperience = it.EnterpriseEmployee.User.WorkExperience,
                    ArrangeStatus = it.ArrangeStatus
                });
            return await request.PageModel.GetPagedListAsync<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>(s, cancellationToken);
        }
    }
}