From 548e3c340da68d88122a90584d1e781e60f5f02e Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 11 八月 2025 18:15:43 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 92 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 1 deletions(-) diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index 680d589..f693340 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -18,6 +18,7 @@ public class UserResumeQueryHandler( IRepository<User> rep ) : + IRequestHandler<GetUserResumesQuery, GetUserResumesQueryResult>, IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>, IRequestHandler<GetUserResumePersonalQuery, GetUserResumePersonalQueryResult>, IRequestHandler<GetUserResumeJobSeekingQuery, GetUserResumeJobSeekingQueryResult>, @@ -27,6 +28,73 @@ IRequestHandler<GetUserResumeDetailQuery, GetUserResumeDetailQueryResult> { private readonly IRepository<User> rep = rep; + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetUserResumesQueryResult> Handle(GetUserResumesQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking(); + if (request.TaskInfoId.HasValue) + { + q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.TaskInfoId == request.TaskInfoId)); + } + 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.HireStatus == EnumTaskUserHireStatus.Pass), + WorkSeniority = it.WorkSeniority, + WorkExperience = it.WorkExperience, + HireStatus = request.TaskInfoId.HasValue + ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.HireStatus as EnumTaskUserHireStatus?).FirstOrDefault() + : null + }); + var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); + return result; + } /// <summary> /// 鏌ヨ鐢ㄦ埛绠�鍘� @@ -42,11 +110,33 @@ request.UserId = logier.Id; } if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鐢ㄦ埛"); - var model = await request.UserId.Value + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.UserId) .GetDetail<User, GetUserResumeQueryResult>(cancellationToken); + model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList(); model.TaskCount = await rep.Change<TaskInfoUser>().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; } -- Gitblit v1.9.1