using FlexJobApi.Core; using Furion.DatabaseAccessor; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// /// C端人员查询处理器 /// public class GetPersonalUserInfosQueryHandler( IRepository rep ) : IRequestHandler, IRequestHandler { private readonly IRepository rep = rep; /// /// 查询C端人员分页列表数据 /// /// /// /// public async Task Handle(GetPersonalUserInfosQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking(); if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Name.Contains(request.Keywords) || it.ContactPhoneNumber.Contains(request.Keywords) || it.Identity.Contains(request.Keywords) || it.EnterpriseEmployees.Any(e => e.Enterprise.EnterpriseName.Contains(request.Keywords))); } if (request.HireTimeBegin.HasValue && request.HireTimeEnd.HasValue) { q = q.Where(it => it.EnterpriseEmployees.Any(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue && request.HireTimeBegin <= e.HireTime && e.HireTime <= request.HireTimeEnd)); } if (request.SignContractBegin.HasValue && request.SignContractEnd.HasValue) { q = q.Where(it => it.EnterpriseEmployees.Any(e => e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue && request.SignContractBegin <= e.EnterpriseSignContractTime && e.EnterpriseSignContractTime <= request.SignContractEnd)); } if (request.IsReal.HasValue) { q = q.Where(it => it.IsReal == request.IsReal); } var s = q.Select(it => new GetPersonalUserInfosQueryResultItem { Id = it.Id, Name = it.Name, ContactPhoneNumber = it.ContactPhoneNumber, Identity = it.Identity, IdentityImg = it.UserAuth.IdentityImg, IdentityBackImg = it.UserAuth.IdentityBackImg, Gender = it.Gender, Age = it.Age, ProvinceCode = it.ProvinceCode, ProvinceContent = it.Province.Content, CityCode = it.CityCode, CityContent = it.City.Content, Enterprises = it.EnterpriseEmployees.Select(e => e.Enterprise.EnterpriseName).ToList(), IsReal = it.IsReal, RealTime = it.RealTime, HireTime = it.EnterpriseEmployees .OrderByDescending(e => e.HireTime) .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue) .Select(e => e.HireTime) .FirstOrDefault(), SignContractTime = it.EnterpriseEmployees .OrderByDescending(e => e.EnterpriseSignContractTime) .Where(e => e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue) .Select(e => e.EnterpriseSignContractTime) .FirstOrDefault(), }); var result = await request.PageModel.GetPagedListAsync(s, cancellationToken); return result; } /// /// 查询C端人员签约详情分页列表数据 /// /// /// /// public Task Handle(GetPersonalUserInfoSignContractsQuery request, CancellationToken cancellationToken) { var q = rep.Change().AsQueryable().AsNoTracking() .Where(it => it.UserId == request.Id) .Select(it => new GetPersonalUserInfoSignContractsQueryResultItem { Id = it.Id, EnterpriseName = it.Enterprise.EnterpriseName, ApplyTime = it.TaskInfoUsers .OrderBy(tu => tu.CreatedTime) .Select(tu => tu.CreatedTime as DateTimeOffset?) .FirstOrDefault(), HireStatus = it.HireStatus, HireTime = it.HireTime, UserSignContractStatus = it.UserSignContractStatus, EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, EnterpriseSignContractTime = it.EnterpriseSignContractTime, ContractUrl = it.ContractUrl, }); return request.PageModel.GetPagedListAsync(q, cancellationToken); } } }