From 56af0f468f321d41db70343abf558d61cda58d31 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 05 九月 2025 15:40:20 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 104 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 99 insertions(+), 5 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index 5ae1bbd..eb73bde 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs @@ -30,6 +30,8 @@ /// 鐏靛伐鍛戒护澶勭悊鍣� /// </summary> public class EnterpriseEmployeesCommandHandler( + SmsUtils smsUtils, + WxmpUtils wxmpUtils, IMediator mediator, IRepository<EnterpriseEmployee> rep, IRepository<User> repUser, @@ -38,15 +40,19 @@ IRepository<ElectronSignSetting> repElectronSignSetting, IRepository<ContractTemplate> repContractTemplate, IRepository<EnterpriseCost> repEnterpriseCost, - IRepository<TaskInfoUser> repTaskInfoUser + IRepository<TaskInfoUser> repTaskInfoUser, + IRepository<CodeUrl> repCodeUrl ) : IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>, IRequestHandler<EditEnterpriseEmployeeCommand, Guid>, IRequestHandler<InviteElectronSignCommand, int>, IRequestHandler<PersonalUserElectronSignCommand, PersonalUserElectronSignCommandResult>, IRequestHandler<EnterpriseUserElectronSignCommand, EnterpriseUserElectronSignCommandResult>, - IRequestHandler<StopElectronSignCommand, int> + IRequestHandler<StopElectronSignCommand, int>, + 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; @@ -56,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> /// 瀵煎叆鐏靛伐淇℃伅 @@ -163,7 +170,7 @@ } } } - if (errors.IsNotNull()) + else { var error = model.Adapt<ImportEnterpriseEmployeesCommandResultError>(); error.ErrorMessage = errors.SplitJoin("锛�"); @@ -266,6 +273,39 @@ } /// <summary> + /// 鍙戦�侀個璇风绾︾煭淇� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<int> Handle(SendInviteElectronSignSmsCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var entities = await rep.AsQueryable() + .Include(it => it.Enterprise) + .Include(it => it.ContractTemplate) + .Where(it => + it.EnterpriseId == logier.EnterpriseId + && request.Ids.Contains(it.Id) + && it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) + .ToListAsync(); + foreach (var entity in entities) + { + await smsUtils.Send(new SendSmsModel + { + PhoneNumber = entity.ContactPhoneNumber, + TemplateCode = EnumSmsTemplateCode.InviteElectronSign, + }, + new + { + name = entity.Enterprise.EnterpriseName, + code = entity.ContractTemplate.Code + }); + } + return entities.Count; + } + + /// <summary> /// 涓汉鐢ㄦ埛绛剧害 /// </summary> /// <param name="request"></param> @@ -275,6 +315,7 @@ { var logier = JwtUtils.GetCurrentLogier(); 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) .FirstOrDefaultAsync(); @@ -332,7 +373,33 @@ { throw Oops.Oh(EnumErrorCodeType.s510, result?.Message ?? "绛剧害澶辫触"); } - return result.Result.Adapt<PersonalUserElectronSignCommandResult>(); + var model = result.Result.Adapt<PersonalUserElectronSignCommandResult>(); + 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.ContactPhoneNumber, + TemplateCode = EnumSmsTemplateCode.ElectronSignUrl, + }, + new + { + name = entity.Enterprise.EnterpriseName, + code = code + }); + } + + return model; } /// <summary> @@ -383,7 +450,33 @@ { throw Oops.Oh(EnumErrorCodeType.s510, result?.Message ?? "绛剧害澶辫触"); } - return result.Result.Adapt<EnterpriseUserElectronSignCommandResult>(); + var model = result.Result.Adapt<EnterpriseUserElectronSignCommandResult>(); + 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; } /// <summary> @@ -433,5 +526,6 @@ return entities.Count; } + } } -- Gitblit v1.9.1