From fff2374fce17e37fa14b26100feb986d61d94b45 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 13 八月 2025 17:40:08 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 72 +++++++++++++++++++++++++++++++++++- 1 files changed, 70 insertions(+), 2 deletions(-) diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index 20c861c..fa96fce 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,71 @@ 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.EnterpriseEmployees.Any(ee => ee.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.EnterpriseEmployees.Where(ee => ee.HireStatus == EnumTaskUserHireStatus.Pass).Sum(ee => ee.TaskInfoUsers.Count()), + WorkSeniority = it.WorkSeniority, + WorkExperience = it.WorkExperience, + CreatedTime = it.CreatedTime, + }); + var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); + return result; + } /// <summary> /// 鏌ヨ鐢ㄦ埛绠�鍘� @@ -42,10 +108,12 @@ 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) + .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) .CountAsync(); if (model.CityCode.IsNotNull()) { -- Gitblit v1.9.1