From 3a57c342ff5b39467b9dd0d5ba3c624311a581f1 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 22 八月 2025 16:44:06 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 105 insertions(+), 6 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs index 3a7ef18..2a300aa 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs @@ -17,7 +17,10 @@ public class EnterpriseEmployeeQueryHandler( IRepository<EnterpriseEmployee> rep ) : - IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult> + IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>, + IRequestHandler<GetEnterpriseEmployeeQuery, GetEnterpriseEmployeeQueryResult>, + IRequestHandler<GetPersonalUserElectronSignsQuery, GetPersonalUserElectronSignsQueryResult>, + IRequestHandler<GetPersonalUserElectronSignQuery, GetPersonalUserElectronSignQueryResult> { private readonly IRepository<EnterpriseEmployee> rep = rep; @@ -56,7 +59,7 @@ } if (request.HireStatus.HasValue) { - q = q.Where(it => it.HireStatus == request.HireStatus); + q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.HireStatus == request.HireStatus)); } if (request.IsReal.HasValue) { @@ -73,23 +76,32 @@ var s = q.Select(it => new GetEnterpriseEmployeesQueryResultItem { Id = it.Id, + Avatar = it.User.Avatar, Name = it.Name, Identity = it.Identity, Gender = it.Gender, Age = it.Age, ContactPhoneNumber = it.ContactPhoneNumber, - UserIsReal = it.User.IsReal, + UserIsReal = it.User.IsReal == true, RealMethod = it.User.RealMethod, PersonalIdentityCode = it.User.PersonalIdentityCode, PersonalIdentityContent = it.User.PersonalIdentity.Content, EducationalBackgroundCode = it.User.EducationalBackgroundCode, EducationalBackgroundContent = it.User.EducationalBackground.Content, - TaskCount = it.User.EnterpriseEmployees.Where(ee => ee.HireStatus == EnumTaskUserHireStatus.Pass).Sum(ee => ee.TaskInfoUsers.Count()), + TaskCount = it.User.EnterpriseEmployees.SelectMany(ee => ee.TaskInfoUsers).Count(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass), WorkSeniority = it.User.WorkSeniority, WorkExperience = it.User.WorkExperience, - HireStatus = it.HireStatus, + HireStatus = it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass) + ? EnumTaskUserHireStatus.Pass + : it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Refuse) + ? EnumTaskUserHireStatus.Refuse + : EnumTaskUserHireStatus.Wait, UserSignContractStatus = it.UserSignContractStatus, - HireTime = it.HireTime, + HireTime = it.TaskInfoUsers + .OrderBy(tu => tu.HireTime) + .Where(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass && tu.HireTime.HasValue) + .Select(tu => tu.HireTime) + .FirstOrDefault(), UserRealTime = it.User.RealTime, UserSignContractTime = it.UserSignContractTime, EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, @@ -97,5 +109,92 @@ }); return await request.PageModel.GetPagedListAsync<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem>(s, cancellationToken); } + + /// <summary> + /// 鏌ヨ鐏靛伐璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseEmployeeQueryResult> Handle(GetEnterpriseEmployeeQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var model = await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .GetDetail<EnterpriseEmployee, GetEnterpriseEmployeeQueryResult>(cancellationToken); + if (request.TaskInfoId.HasValue) + { + model.ApplyTime = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .Where(it => it.TaskInfoId == request.TaskInfoId && it.EnterpriseEmployeeId == request.Id) + .Select(it => it.CreatedTime as DateTimeOffset?) + .FirstOrDefaultAsync(cancellationToken); + } + else if (logier.Type == EnumUserType.Enterprise) + { + model.ApplyTime = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .OrderBy(it => it.CreatedTime) + .Where(it => it.TaskInfo.EnterpriseId == logier.EnterpriseId && it.EnterpriseEmployeeId == request.Id) + .Select(it => it.CreatedTime as DateTimeOffset?) + .FirstOrDefaultAsync(cancellationToken); + } + + return model; + } + + /// <summary> + /// 鏌ヨ涓汉鐢ㄦ埛绛剧害鍒楄〃 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetPersonalUserElectronSignsQueryResult> Handle(GetPersonalUserElectronSignsQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking() + .Where(it => it.UserId == logier.Id); + if (request.UserSignContractStatus.HasValue) + { + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus.Value); + } + else + { + q = q.Where(it => + it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait + || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Effect + || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Stop); + } + var s = q.Select(it => new GetPersonalUserElectronSignsQueryResultItem + { + Id = it.Id, + EnterpriseName = it.Enterprise.EnterpriseName, + UserSignContractStatus = it.UserSignContractStatus, + }); + return await request.PageModel.GetPagedListAsync<GetPersonalUserElectronSignsQueryResult, GetPersonalUserElectronSignsQueryResultItem>(s, cancellationToken); + } + + /// <summary> + /// 鏌ヨ涓汉鐢ㄦ埛绛剧害璇︽儏 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetPersonalUserElectronSignQueryResult> Handle(GetPersonalUserElectronSignQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking() + .Where(it => it.UserId == logier.Id); + if (request.Id.HasValue) + { + q = q.Where(it => it.Id == request.Id); + } + + if (request.Code.IsNotNull()) + { + q = q.Where(it => it.ContractTemplate.Code == request.Code); + } + + var model = await q.GetDetail<EnterpriseEmployee, GetPersonalUserElectronSignQueryResult>(); + return model; + } } } -- Gitblit v1.9.1