From 5c45bc53e2c18e45130c21048df4af4896455c6d Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 12 九月 2025 15:58:48 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs | 128 +++++++++++++++++++++++++++++++++--------- 1 files changed, 101 insertions(+), 27 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs index a75ed94..0c59ee7 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs @@ -1,4 +1,5 @@ -锘縰sing FlexJobApi.Core; +锘縰sing Aop.Api.Domain; +using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.DistributedIDGenerator; using Furion.FriendlyException; @@ -9,6 +10,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Principal; using System.Text; using System.Threading.Tasks; @@ -21,6 +23,8 @@ IRepository<EnterpriseEmployee> rep, IRepository<ContractTemplate> repContractTemplate, IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract, + IRepository<Enterprise> repEnterprise, + IRepository<User> repUser, IMediator mediator ) : IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>, @@ -31,6 +35,8 @@ private readonly IRepository<EnterpriseEmployee> rep = rep; private readonly IRepository<ContractTemplate> repContractTemplate = repContractTemplate; private readonly IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract = repEnterpriseEmployeeContract; + private readonly IRepository<Enterprise> repEnterprise = repEnterprise; + private readonly IRepository<User> repUser = repUser; private readonly IMediator mediator = mediator; /// <summary> @@ -74,34 +80,56 @@ { q = q.Where(it => (it.UserId.HasValue && it.User.IsReal) == request.IsReal.Value); } - if (request.UserSignContractStatus.HasValue) + if (request.SignContractStatus.HasValue) { - if (logier.ClientType == EnumClientType.Wxmp) + switch (request.SignContractStatus.Value) { - switch (request.UserSignContractStatus.Value) - { - case EnumTaskUserSignContractStatus.Wait: - q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == request.UserSignContractStatus); - break; - case EnumTaskUserSignContractStatus.Pass: - q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass); - break; - case EnumTaskUserSignContractStatus.Stop: - q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); - break; - default: - q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); - break; - } - } - else - { - q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); + case EnumGetEnterpriseEmployeesQuerySignContractStatus.UserWait: + q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait); + break; + case EnumGetEnterpriseEmployeesQuerySignContractStatus.EnterpriseWait: + q = q.Where(it => it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Wait); + break; + case EnumGetEnterpriseEmployeesQuerySignContractStatus.Pass: + q = q.Where(it => + it.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass + && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass); + break; + default: + break; } } - if (request.EnterpriseSignContractStatus.HasValue) + else { - q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus); + if (request.UserSignContractStatus.HasValue) + { + if (logier.ClientType == EnumClientType.Wxmp) + { + switch (request.UserSignContractStatus.Value) + { + case EnumTaskUserSignContractStatus.Wait: + q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == request.UserSignContractStatus); + break; + case EnumTaskUserSignContractStatus.Pass: + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass); + break; + case EnumTaskUserSignContractStatus.Stop: + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); + break; + default: + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); + break; + } + } + else + { + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); + } + } + if (request.EnterpriseSignContractStatus.HasValue) + { + q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus); + } } var s = q.Select(it => new GetEnterpriseEmployeesQueryResultItem { @@ -239,12 +267,51 @@ }, cancellationToken); var entity = await rep.AsQueryable() - .Include(it => it.Enterprise) .Where(it => it.UserId == logier.Id && it.ContractTemplateId == contractTemplate.Id) .FirstOrDefaultAsync(); - if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐"); + var enterprise = await repEnterprise.AsQueryable() + .Where(it => it.Id == contractTemplate.EnterpriseId) + .Select(it => new + { + it.EnterpriseName + }) + .FirstOrDefaultAsync(); + if (enterprise == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟"); + var add = false; + if (entity == null) + { + var user = await repUser.AsQueryable().AsNoTracking() + .Include(it => it.UserAuth) + .Where(it => it.Id == logier.Id) + .Select(it => new + { + it.Name, + it.Identity, + it.ContactPhoneNumber, + it.Gender, + it.Age, + it.UserAuth.IdentityImg, + it.UserAuth.IdentityBackImg + }) + .FirstOrDefaultAsync(cancellationToken); + if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "璐﹀彿"); + entity = new EnterpriseEmployee + { + Id = IDGen.NextID(), + EnterpriseId = contractTemplate.EnterpriseId, + UserId = logier.Id, + Name = user.Name, + Identity = user.Identity, + ContactPhoneNumber = user.ContactPhoneNumber, + Gender = user.Gender, + Age = user.Age, + IdentityImg = user.IdentityImg, + IdentityBackImg = user.IdentityBackImg, + }; + add = true; + } if (entity.UserSignContractStatus == null) { entity.ContractTemplateId = contractTemplate.Id; @@ -262,6 +329,13 @@ UserSignContractStatus = entity.UserSignContractStatus, }; await repEnterpriseEmployeeContract.InsertAsync(contract); + } + if (add) + { + await rep.InsertAsync(entity); + } + else + { await rep.UpdateAsync(entity); } return new GetPersonalUserElectronSignQueryResult @@ -274,7 +348,7 @@ Identity = entity.Identity, ContactPhoneNumber = entity.ContactPhoneNumber, UserSignContractTime = entity.UserSignContractTime, - EnterpriseEnterpriseName = entity.Enterprise.EnterpriseName, + EnterpriseEnterpriseName = enterprise.EnterpriseName, EnterpriseSignContractTime = entity.EnterpriseSignContractTime, ContractUrl = entity.ContractUrl, }; -- Gitblit v1.9.1