using FlexJobApi.Core; using Furion.DatabaseAccessor; using Mapster; 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 { /// /// 灵工查询处理器 /// public class EnterpriseEmployeeQueryHandler( IRepository rep ) : IRequestHandler { private readonly IRepository rep = rep; /// /// 查询灵工分页列表数据 /// /// /// /// public async Task Handle(GetEnterpriseEmployeesQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking() .OrderBy(it => it.CreatedTime) .Where(it => it.EnterpriseId == logier.EnterpriseId); if (request.Keywords.IsNotNull()) { q = q.Where(it => it.Name.Contains(request.Keywords) || it.ContactPhoneNumber.Contains(request.Keywords) || it.Identity.Contains(request.Keywords)); } if (request.CreatedTimeStart.HasValue && request.CreatedTimeEnd.HasValue) { q = q.Where(it => it.CreatedTime >= request.CreatedTimeStart.Value && it.CreatedTime <= request.CreatedTimeEnd.Value); } if (request.SignContractTimeStart.HasValue && request.SignContractTimeEnd.HasValue) { q = q.Where(it => it.UserSignContractTime >= request.SignContractTimeStart.Value && it.UserSignContractTime <= request.SignContractTimeEnd.Value || it.EnterpriseSignContractTime >= request.SignContractTimeStart.Value && it.EnterpriseSignContractTime <= request.SignContractTimeEnd.Value); } if (request.HireStatus.HasValue) { q = q.Where(it => it.HireStatus == request.HireStatus); } if (request.IsReal.HasValue) { q = q.Where(it => (it.UserId.HasValue && it.User.IsReal) == request.IsReal.Value); } if (request.UserSignContractStatus.HasValue) { q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); } if (request.EnterpriseSignContractStatus.HasValue) { q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus); } var s = q.ProjectToType(); return await request.PageModel.GetPagedListAsync(s, cancellationToken); } } }