Пример #1
0
        public static string Create(int length, IdentifyCodeType identifyCodeType = IdentifyCodeType.Number)
        {
            var line = string.Empty;

            switch (identifyCodeType)
            {
            case IdentifyCodeType.Letter:
                line = charStr;
                break;

            case IdentifyCodeType.Number:
                line = numLine;
                break;

            case IdentifyCodeType.MixNumberLetter:
                line = charStr + numLine;
                break;
            }
            var lineArray = line.ToCharArray();
            var sb        = new StringBuilder();
            var random    = new Random(unchecked ((int)DateTime.Now.Ticks));

            for (var i = 0; i < length; i++)
            {
                sb.Append(lineArray[random.Next(lineArray.Length)]);
            }

            return(sb.ToString());
        }
Пример #2
0
        public string IdentifyCode2(string account, IdentifyCodeType identifyCodeType)
        {
            var accountType = AccountHelper.JudgeAccountRegType(account);

            if (accountType == AccountRegistType.UserName)
            {
                throw new LotteryException("只能通过手机号码或Email获取验证码");
            }
            var identifyCode = _identifyCodeAppService.GenerateIdentifyCode(account, accountType);

            switch (accountType)
            {
            case AccountRegistType.Email:
                SendIdentifyCodeByEmail(account, identifyCode, identifyCodeType);
                break;

            case AccountRegistType.Phone:
                SendIdentifyCodeByPhone(account, identifyCode, identifyCodeType);
                break;
            }

            return("验证码获取成功,请注意查收");
        }
Пример #3
0
        private void SendIdentifyCodeByPhone(string phone, IdentifyCodeOutput identifyCode, IdentifyCodeType identifyCodeType)
        {
            string smsTempleteCode;
            string title = "";

            switch (identifyCodeType)
            {
            case IdentifyCodeType.Register:
                smsTempleteCode = "SMS_128575019";
                title           = "用户注册";
                break;

            case IdentifyCodeType.RetrievePwd:
                smsTempleteCode = "SMS_128545037";
                title           = "找回密码";
                break;

            default:
                throw new LotteryException("无法获取该种类型的验证码");
            }

            var templateParam = "{\"code\":\"" + identifyCode.Code + "\"}";

            SendCommandAsync(new AddMessageRecordCommand(Guid.NewGuid().ToString(), null, phone, title,
                                                         templateParam, (int)identifyCodeType, (int)AccountRegistType.Phone, _lotterySession.UserId));
            if (identifyCode.IsNew)
            {
                SendCommandAsync(new AddIdentifyCodeCommand(identifyCode.IdentifyCodeId, phone, identifyCode.Code,
                                                            (int)identifyCodeType, (int)AccountRegistType.Phone,
                                                            identifyCode.ExpirationDate, _lotterySession.UserId));
            }
            else
            {
                SendCommandAsync(new UpdateIdentifyCodeCommand(identifyCode.IdentifyCodeId, identifyCode.Code, phone,
                                                               identifyCode.ExpirationDate, _lotterySession.UserId));
            }
            _smsSender.Send(phone, templateParam, smsTempleteCode);
        }
Пример #4
0
        private void SendIdentifyCodeByEmail(string email, IdentifyCodeOutput identifyCode, IdentifyCodeType identifyCodeType)
        {
            var templetParams = new Dictionary <string, string>()
            {
                { "code", identifyCode.Code }
            };
            var emailContent = string.Empty;
            var emailTitle   = string.Empty;

            switch (identifyCodeType)
            {
            case IdentifyCodeType.Register:
                emailTitle   = "注册用户";
                emailContent = EmailTempletHelper.ReadContent("RegisterTemplet", templetParams);
                break;

            case IdentifyCodeType.RetrievePwd:
                emailTitle   = "找回密码";
                emailContent = EmailTempletHelper.ReadContent("RetrievePwd", templetParams);
                break;
            }
            SendCommandAsync(new AddMessageRecordCommand(Guid.NewGuid().ToString(), null, email, emailTitle,
                                                         emailContent, (int)identifyCodeType, (int)AccountRegistType.Email, _lotterySession.UserId));
            if (identifyCode.IsNew)
            {
                SendCommandAsync(new AddIdentifyCodeCommand(identifyCode.IdentifyCodeId, email, identifyCode.Code,
                                                            (int)identifyCodeType, (int)AccountRegistType.Email,
                                                            identifyCode.ExpirationDate, _lotterySession.UserId));
            }
            else
            {
                SendCommandAsync(new UpdateIdentifyCodeCommand(identifyCode.IdentifyCodeId, identifyCode.Code, email,
                                                               identifyCode.ExpirationDate, _lotterySession.UserId));
            }
            _emailSender.Send(email, emailTitle, emailContent, false);
        }