From 78b5e0a2e4c48239983e236c48f8c0b897d69f9e Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 09 九月 2025 09:38:00 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 87 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 82 insertions(+), 5 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index e807a1b..205542b 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs @@ -31,6 +31,7 @@ /// </summary> public class EnterpriseEmployeesCommandHandler( SmsUtils smsUtils, + WxmpUtils wxmpUtils, IMediator mediator, IRepository<EnterpriseEmployee> rep, IRepository<User> repUser, @@ -39,7 +40,8 @@ IRepository<ElectronSignSetting> repElectronSignSetting, IRepository<ContractTemplate> repContractTemplate, IRepository<EnterpriseCost> repEnterpriseCost, - IRepository<TaskInfoUser> repTaskInfoUser + IRepository<TaskInfoUser> repTaskInfoUser, + IRepository<CodeUrl> repCodeUrl ) : IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>, IRequestHandler<EditEnterpriseEmployeeCommand, Guid>, @@ -50,6 +52,7 @@ IRequestHandler<SendInviteElectronSignSmsCommand, int> { private readonly SmsUtils smsUtils = smsUtils; + private readonly WxmpUtils wxmpUtils = wxmpUtils; private readonly IMediator mediator = mediator; private readonly IRepository<EnterpriseEmployee> rep = rep; private readonly IRepository<User> repUser = repUser; @@ -59,6 +62,7 @@ private readonly IRepository<ContractTemplate> repContractTemplate = repContractTemplate; private readonly IRepository<EnterpriseCost> repEnterpriseCost = repEnterpriseCost; private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; + private readonly IRepository<CodeUrl> repCodeUrl = repCodeUrl; /// <summary> /// 瀵煎叆鐏靛伐淇℃伅 @@ -287,6 +291,13 @@ .ToListAsync(); foreach (var entity in entities) { + var codeUrl = new SaveCodeUrlCommand + { + Scene = EnumCodeUrlScene.InviteElectronSign, + ParamValue1 = entity.Id.ToString(), + ExpiredTime = DateTime.Now.AddMonths(1) + }; + var code = await mediator.Send(codeUrl); await smsUtils.Send(new SendSmsModel { PhoneNumber = entity.ContactPhoneNumber, @@ -295,7 +306,7 @@ new { name = entity.Enterprise.EnterpriseName, - code = entity.ContractTemplate.Code + code = code }); } return entities.Count; @@ -310,9 +321,31 @@ public async Task<PersonalUserElectronSignCommandResult> Handle(PersonalUserElectronSignCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); + Guid userId; + if (logier != null) + { + userId = logier.Id; + } + if (request.Id == null) + { + if (request.SmsCode.IsNotNull()) + { + var codeUrl = await mediator.Send(new GetCodeUrlQuery + { + Code = request.SmsCode, + Scene = EnumCodeUrlScene.InviteElectronSign + }); + request.Id = codeUrl.ParamValue1.ToGuid()!; + } + else + { + throw Oops.Oh(EnumErrorCodeType.s400, "璇峰~鍐欑伒宸d鎴栫煭淇$紪鍙�"); + } + } var entity = await rep.AsQueryable() + .Include(it => it.Enterprise) .Include(it => it.ContractTemplate).ThenInclude(it => it.Values) - .Where(it => it.UserId == logier.Id && it.Id == request.Id) + .Where(it => it.Id == request.Id) .FirstOrDefaultAsync(); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s510, "鏈姤鍚嶈浼佷笟"); if (entity.UserSignContractStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "浼佷笟鏈彂璧风绾�"); @@ -326,7 +359,7 @@ if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓"); var user = await repUser.AsQueryable().AsNoTracking() .Include(it => it.UserAuth) - .Where(it => it.Id == logier.Id) + .Where(it => it.Id == entity.UserId) .FirstOrDefaultAsync(); if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛"); if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign && !user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "璇峰厛瀹炲悕"); @@ -335,7 +368,7 @@ OutContractId = contract.Id.ToString(), TemplateId = entity.ContractTemplate.ElectronSignContractTemplateId!.Value, Title = entity.ContractTemplate.Name, - OutUserId = logier.Id.ToString(), + OutUserId = entity.UserId.ToString(), Values = entity.ContractTemplate.Values .Where(it => it.UserType == EnumUserType.Personal) .Select(it => @@ -372,6 +405,28 @@ model.SignContractLongUrl = model.SignContractLongUrl .Replace("https://openapi.bestsign.info:443", "https://wx115.bestsign.info") .Replace("https://openapi.bestsign.cn:443", "https://wx115.bestsign.cn"); + + if (request.SmsCode.IsNull() && entity.ContractTemplate.Access == EnumElectronSignAccess.AlipaySign) + { + var codeUrl = new SaveCodeUrlCommand + { + Scene = EnumCodeUrlScene.ElectronSignUrl, + Url = model.SignContractLongUrl, + ExpiredTime = DateTime.Now.AddMonths(1) + }; + var code = await mediator.Send(codeUrl); + await smsUtils.Send(new SendSmsModel + { + PhoneNumber = entity.ContactPhoneNumber, + TemplateCode = EnumSmsTemplateCode.ElectronSignUrl, + }, + new + { + name = entity.Enterprise.EnterpriseName, + code = code + }); + } + return model; } @@ -427,6 +482,28 @@ model.SignContractLongUrl = model.SignContractLongUrl .Replace("https://openapi.bestsign.info:443", "https://wx115.bestsign.info") .Replace("https://openapi.bestsign.cn:443", "https://wx115.bestsign.cn"); + + if (entity.ContractTemplate.Access == EnumElectronSignAccess.AlipaySign) + { + var codeUrl = new SaveCodeUrlCommand + { + Scene = EnumCodeUrlScene.ElectronSignUrl, + Url = model.SignContractLongUrl, + ExpiredTime = DateTime.Now.AddMonths(1) + }; + var code = await mediator.Send(codeUrl); + await smsUtils.Send(new SendSmsModel + { + PhoneNumber = entity.Enterprise.ContactPhoneNumber, + TemplateCode = EnumSmsTemplateCode.ElectronSignUrl, + }, + new + { + name = entity.Name, + code = code + }); + } + return model; } -- Gitblit v1.9.1