| | |
| | | /// 灵工命令处理器 |
| | | /// </summary> |
| | | public class EnterpriseEmployeesCommandHandler( |
| | | SmsUtils smsUtils, |
| | | WxmpUtils wxmpUtils, |
| | | IMediator mediator, |
| | | IRepository<EnterpriseEmployee> rep, |
| | | IRepository<User> repUser, |
| | |
| | | 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; |
| | |
| | | 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> |
| | | /// 导入灵工信息 |
| | |
| | | } |
| | | } |
| | | } |
| | | if (errors.IsNotNull()) |
| | | else |
| | | { |
| | | var error = model.Adapt<ImportEnterpriseEmployeesCommandResultError>(); |
| | | error.ErrorMessage = errors.SplitJoin(","); |
| | |
| | | } |
| | | |
| | | /// <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> |
| | |
| | | { |
| | | 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(); |
| | |
| | | { |
| | | 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> |
| | |
| | | { |
| | | 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> |
| | |
| | | |
| | | return entities.Count; |
| | | } |
| | | |
| | | } |
| | | } |