| | |
| | | /// </summary> |
| | | public class EnterpriseEmployeesCommandHandler( |
| | | SmsUtils smsUtils, |
| | | WxmpUtils wxmpUtils, |
| | | IMediator mediator, |
| | | IRepository<EnterpriseEmployee> rep, |
| | | IRepository<User> repUser, |
| | |
| | | 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; |
| | |
| | | .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, |
| | |
| | | new |
| | | { |
| | | name = entity.Enterprise.EnterpriseName, |
| | | code = entity.ContractTemplate.Code |
| | | code = code |
| | | }); |
| | | } |
| | | return entities.Count; |
| | |
| | | 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, "请填写灵工Id或短信编号"); |
| | | } |
| | | } |
| | | 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, "企业未发起签约"); |
| | |
| | | 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, "请先实名"); |
| | |
| | | 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 => |
| | |
| | | .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) |
| | | if (request.SmsCode.IsNull() && entity.ContractTemplate.Access == EnumElectronSignAccess.AlipaySign) |
| | | { |
| | | var codeUrl = new SaveCodeUrlCommand |
| | | { |