コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: AccountLogic.cs プロジェクト: yu900820/Ngk.Service
        /// <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());
        }