From 5454e326a76e695ba4a51d5994c88ef7ded76efc Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 21 八月 2025 13:24:10 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs | 67 ++++++++++++++++++++++++++------- 1 files changed, 52 insertions(+), 15 deletions(-) diff --git a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs index 5ee6ff5..64770ea 100644 --- a/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/Users/Queries/GetPersonalUserInfosQueryHandler.cs @@ -16,7 +16,8 @@ public class GetPersonalUserInfosQueryHandler( IRepository<User> rep ) : - IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult> + IRequestHandler<GetPersonalUserInfosQuery, GetPersonalUserInfosQueryResult>, + IRequestHandler<GetPersonalUserInfoSignContractsQuery, GetPersonalUserInfoSignContractsQueryResult> { private readonly IRepository<User> rep = rep; @@ -29,7 +30,8 @@ public async Task<GetPersonalUserInfosQueryResult> Handle(GetPersonalUserInfosQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - var q = rep.AsQueryable().AsNoTracking(); + var q = rep.AsQueryable().AsNoTracking() + .Where(it => it.Type == EnumUserType.Personal); if (request.Keywords.IsNotNull()) { q = q.Where(it => @@ -41,21 +43,17 @@ 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)); + it.EnterpriseEmployees.SelectMany(ee => ee.TaskInfoUsers).Any(tu => + tu.HireStatus == EnumTaskUserHireStatus.Pass + && tu.HireTime.HasValue + && request.HireTimeBegin <= tu.HireTime + && tu.HireTime <= request.HireTimeEnd)); } if (request.SignContractBegin.HasValue && request.SignContractEnd.HasValue) { q = q.Where(it => it.EnterpriseEmployees.Any(e => - e.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass - && e.UserSignContractTime.HasValue - && request.SignContractBegin <= e.UserSignContractTime - && e.UserSignContractTime <= request.SignContractEnd - || e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass + e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue && request.SignContractBegin <= e.EnterpriseSignContractTime && e.EnterpriseSignContractTime <= request.SignContractEnd)); @@ -70,6 +68,8 @@ 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, @@ -80,18 +80,55 @@ IsReal = it.IsReal, RealTime = it.RealTime, HireTime = it.EnterpriseEmployees + .SelectMany(ee => ee.TaskInfoUsers) .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 > e.UserSignContractTime ? e.EnterpriseSignContractTime : e.UserSignContractTime) - .Where(e => e.HireStatus == EnumTaskUserHireStatus.Pass && e.HireTime.HasValue) - .Select(e => e.HireTime) + .OrderByDescending(e => e.EnterpriseSignContractTime) + .Where(e => e.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass && e.EnterpriseSignContractTime.HasValue) + .Select(e => e.EnterpriseSignContractTime) .FirstOrDefault(), }); var result = await request.PageModel.GetPagedListAsync<GetPersonalUserInfosQueryResult, GetPersonalUserInfosQueryResultItem>(s, cancellationToken); return result; } + + /// <summary> + /// 鏌ヨC绔汉鍛樼绾﹁鎯呭垎椤靛垪琛ㄦ暟鎹� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetPersonalUserInfoSignContractsQueryResult> Handle(GetPersonalUserInfoSignContractsQuery request, CancellationToken cancellationToken) + { + var q = rep.Change<EnterpriseEmployee>().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.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass) + ? EnumTaskUserHireStatus.Pass + : it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Refuse) + ? EnumTaskUserHireStatus.Refuse + : EnumTaskUserHireStatus.Wait, + HireTime = it.TaskInfoUsers + .OrderBy(tu => tu.HireTime) + .Where(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass && tu.HireTime.HasValue) + .Select(tu => tu.HireTime) + .FirstOrDefault(), + UserSignContractStatus = it.UserSignContractStatus, + EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, + EnterpriseSignContractTime = it.EnterpriseSignContractTime, + ContractUrl = it.ContractUrl, + }); + return request.PageModel.GetPagedListAsync<GetPersonalUserInfoSignContractsQueryResult, GetPersonalUserInfoSignContractsQueryResultItem>(q, cancellationToken); + } } } -- Gitblit v1.9.1