using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; 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 UserResumeQueryHandler( IRepository rep ) : IRequestHandler, IRequestHandler, IRequestHandler, IRequestHandler, IRequestHandler>, IRequestHandler, IRequestHandler, IRequestHandler { private readonly IRepository rep = rep; /// /// 查询灵工分页列表数据 /// /// /// /// public async Task Handle(GetUserResumesQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking(); if (request.UserExpectJobs.IsNotNull()) { q = q.Where(it => it.UserExpectJobs.Any(j => request.UserExpectJobs.Contains(j.ExpectJobCode) || j.ExpectJob.ParentId.HasValue && (request.UserExpectJobs.Contains(j.ExpectJob.Parent.Code)))); } if (request.Gender.HasValue) { q = q.Where(it => it.Gender == request.Gender); } if (request.PersonalIdentityCode.IsNotNull()) { q = q.Where(it => it.PersonalIdentityCode == request.PersonalIdentityCode); } if (request.AgeMin.HasValue) { q = q.Where(it => it.Age >= request.AgeMin); } if (request.AgeMax.HasValue) { q = q.Where(it => it.Age <= request.AgeMax); } if (request.UserCredentials.IsNotNull()) { q = q.Where(it => it.UserCredentials.Any(c => request.UserCredentials.Contains(c.TypeCode))); } var s = q.Select(it => new GetUserResumesQueryResultItem { Id = it.Id, Avatar = it.Avatar, Name = it.Name, Gender = it.Gender, IsReal = it.IsReal, Age = it.Age, PersonalIdentityCode = it.PersonalIdentityCode, PersonalIdentityContent = it.PersonalIdentity.Content, EducationalBackgroundCode = it.EducationalBackgroundCode, EducationalBackgroundContent = it.EducationalBackground.Content, TaskCount = it.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), WorkSeniority = it.WorkSeniority, WorkExperience = it.WorkExperience }); var result = await request.PageModel.GetPagedListAsync(s, cancellationToken); return result; } /// /// 查询用户简历 /// /// /// /// public async Task Handle(GetUserResumeQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); if (logier.Type == EnumUserType.Personal) { request.UserId = logier.Id; } if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择用户"); var model = await request.UserId.Value .GetDetail(cancellationToken); model.TaskCount = await rep.Change().AsQueryable().AsNoTracking() .Where(it => it.UserId == model.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) .CountAsync(); if (model.CityCode.IsNotNull()) { model.CompleteRate += 20; } if (model.JobSeekingStatus.HasValue) { model.CompleteRate += 20; } if (model.UserCredentials.IsNotNull()) { model.CompleteRate += 20; } if (model.WorkExperience.IsNotNull() || model.WorkSeniority.IsNotNull()) { model.CompleteRate += 20; } if (model.Weight.HasValue || model.Height.HasValue || model.Photos.IsNotNull()) { model.CompleteRate += 20; } return model; } /// /// 查询用户简历-个人信息 /// /// /// /// public Task Handle(GetUserResumePersonalQuery request, CancellationToken cancellationToken) { return rep.GetPersonalQueryable(false) .GetDetail(cancellationToken); } /// /// 查询用户简历-求职意向 /// /// /// /// public Task Handle(GetUserResumeJobSeekingQuery request, CancellationToken cancellationToken) { return rep.GetPersonalQueryable(false) .GetDetail(cancellationToken); } /// /// 查询用户简历-资格证书列表 /// /// /// /// public async Task> Handle(GetUserResumeCredentialsQuery request, CancellationToken cancellationToken) { return await rep.GetPersonalQueryable(false) .SelectMany(it => it.UserCredentials) .OrderBy(it => it.CreatedTime) .ProjectToType() .ToListAsync(cancellationToken); } /// /// 查询用户简历-资格证书 /// /// /// /// public Task Handle(GetUserResumeCredentialQuery request, CancellationToken cancellationToken) { return rep.GetPersonalQueryable(false) .SelectMany(it => it.UserCredentials) .Where(it => it.Id == request.Id) .GetDetail(cancellationToken); } /// /// 查询用户简历-工作经验 /// /// /// /// public Task Handle(GetUserResumeWorkExperienceQuery request, CancellationToken cancellationToken) { return rep.GetPersonalQueryable(false) .GetDetail(cancellationToken); } /// /// 查询用户简历-详细信息 /// /// /// /// public Task Handle(GetUserResumeDetailQuery request, CancellationToken cancellationToken) { return rep.GetPersonalQueryable(false) .GetDetail(cancellationToken); } } }