/// <summary> /// 发送验证码 /// </summary> /// <param name="phoneNumber">手机号</param> /// <param name="countryCode">国际电话区号,发送国际短信为必传字段</param> /// <returns>执行结果</returns> public async Task <ExcutedResult <string> > SendCaptcha(string phoneNumber, string countryCode) { try { var oldCaptcha = Repository.CheckMobileCaptcha(phoneNumber); if (oldCaptcha != null) { return(ExcutedResult <string> .SuccessResult("", oldCaptcha.Id.ToString())); } IConfiguration config = AspectCoreContainer.Resolve <IConfiguration>(); var expireSeconds = int.Parse(config["Captcha:Common:ExpireSeconds"]); var captcha = CodeHelper.CreateMobileCode(phoneNumber); var entity = new DataAccess.Entities.Captcha { Id = Guid.NewGuid(), Code = captcha, CountryCode = countryCode, ExpireTime = DateTime.UtcNow.AddSeconds(expireSeconds), Type = (int)EnumCaptchaType.Sms, CreateTime = DateTime.UtcNow, Mobile = phoneNumber, State = (int)EnumState.Normal }; Create(entity, out var excutedResult); if (excutedResult.Status != EnumStatus.Success) { return(ExcutedResult <string> .FailedResult(excutedResult.Code, excutedResult.Message)); } #region 新版短信 //短信模板 var templateCode = ""; if (!countryCode.Contains("86")) { templateCode = _configDataLogic.GetByKey(ConfigDataKey.EnSmsTemplate); } else { templateCode = _configDataLogic.GetByKey(ConfigDataKey.SmsTemplate); } //短信渠道 SmsClient smsClient = AspectCoreContainer.Resolve <YunPianSmsClient>(); string content = string.Format(templateCode, captcha); int client = 1;//固定传web excutedResult = await smsClient.SendAsync(phoneNumber, content, client, countryCode, templateCode); if (excutedResult.Status != EnumStatus.Success || excutedResult.Code != SysResultCode.Success) { return(ExcutedResult <string> .FailedResult(excutedResult.Code, excutedResult.Message)); } #endregion return(ExcutedResult <string> .SuccessResult("", entity.Id.ToString())); } catch (Exception ex) { Log4NetHelper.WriteError(GetType(), ex, "发送验证码错误"); throw; } }
public ProposerResponse AddProposal(AddProposalRequest request) { if (Repository.CheckRepeatTarget(request.Target)) { throw new BusinessException(BusinessResultCode.ProposalRepeat, "该合约正在提案中..."); } var hour = _configDataLogic.GetByKey(ConfigDataKey.ProposalExpireHour); var iHour = int.Parse(hour); var time = DateTime.UtcNow.AddHours(iHour); BlackContract entity = new BlackContract() { ContractId = _randomIdRepository.GetContractNum(), Desc = request.Desc, ExpireTime = time, ExpireTimestamp = time.ToTimestamp(), CreateTime = DateTime.UtcNow, Id = Guid.NewGuid(), Initiator = request.Initiator, ProposalState = (int)EnumProposalState.Add, State = (int)EnumState.Normal, Target = request.Target, TransferId = "", }; Create(entity, out var result); ProposerResponse response = new ProposerResponse() { Id = entity.Id, ContractId = entity.ContractId, ExpireTimestamp = entity.ExpireTimestamp }; return(response); }
/// <summary> /// 创建钱包帐号 /// </summary> /// <param name="request"></param> /// <returns></returns> public ExcutedResult CreateFreeAccount(CreateFreeAccountRequest request) { if (!RegexHelper.CheckAccount(request.Account)) { return(ExcutedResult.FailedResult(BusinessResultCode.AccountNotInRule, "帐号不符合规则")); } if (request.PublicKey.Substring(0, 3) != chain) { throw new BusinessException(BusinessResultCode.PublicKeyError, "公钥格式错误"); } //获取用户创建数 int count = _createAccountRecordRepository.GetFreeCreateNum(chain, request.Uuid); if (int.TryParse(_configDataLogic.GetByKey(ConfigDataKey.RegisterAccountLimit), out var freeNum) && freeNum > 0) { if (count > freeNum) { throw new BusinessException(BusinessResultCode.FreeAccountLimit, "您已无法创建账号,请联系客服人员"); } } var client = _contractFactory.GetService <IAccountClient>(chain); var tx = client.CreateAccount(new NewAccount() { AccountName = request.Account, ActiveKey = request.PublicKey, OwnerKey = request.PublicKey, }); tx.Wait(); var result = tx.Result; if (result.Status != EnumStatus.Success) { if (result.Code != SysResultCode.ServerException) { return(ExcutedResult.FailedResult(result.Code, result.Message)); } return(ExcutedResult.FailedResult(BusinessResultCode.CreateAccountFail, "链创建账号失败")); } //添加帐号及记录 using (var trans = base.GetNewTransaction()) { CreateAccountRecord record = new CreateAccountRecord() { Owner = result.Data.Payer, ChainCode = chain, Account = request.Account, ClientIp = CurrentUser.ClientIP, Uuid = request.Uuid ?? "", Type = (int)EnumAccountType.Free, PublicKey = request.PublicKey, Access = "active", Remark = result.Data.TransactionId }; _createAccountRecordRepository.Add(record); Account entity = new Account { ChainCode = chain, Account1 = request.Account, Type = (int)EnumAccountType.Free, PublicKey = request.PublicKey, Access = "active",//TODO }; Repository.Add(entity); trans.Commit(); } return(ExcutedResult.SuccessResult()); }