/// <summary>
        /// 发送语音短信
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public SmsResponseDto <SendSmsResponseDto> SendVoiceSms(SendVoiceSmsParam param)
        {
            new SendVoiceSmsParamValidator().Validate(param).Check(HttpStatus.Err.Name);
            CommonRequest request =
                base.GetRequest("dyvmsapi.aliyuncs.com", "SingleCallByTts", "2017-05-25", "cn-hangzhou");

            request.AddQueryParameters("CalledNumber", param.Phone);
            request.AddQueryParameters("CalledShowNumber", param.CalledShowNumber);
            request.AddQueryParameters("TtsCode", param.TemplateCode);
            request.AddQueryParameters("PlayTimes", param.PlatTimes.ToString()); //播放次数
            request.AddQueryParameters("Volume", param.Volume.ToString());       //播放音量
            Dictionary <string, string> data = new Dictionary <string, string>();

            param.Content.ForEach(item => { data.Add(item.Key, item.Value); });
            request.AddQueryParameters("TtsParam", _jsonProvider.Serializer(data));
            try
            {
                CommonResponse response = GetClient().GetCommonResponse(request);
                if (response != null)
                {
                    var res = _jsonProvider
                              .Deserialize <SendVoiceSmsResponseDto>(
                        response.Data);
                    if (res != null)
                    {
                        SmsCode smsCode = SmsCodeMap.Where(x => x.Key == res.Code).Select(x => x.Value)
                                          .FirstOrDefault();

                        if (smsCode != default(SmsCode))
                        {
                            return(new SmsResponseDto <SendSmsResponseDto>()
                            {
                                Code = smsCode,
                                Msg = smsCode == SmsCode.Ok ? "success" : "lose",
                                Extend = new SendSmsResponseDto(param.Phone, new SendSmsExtend()
                                {
                                    BizId = smsCode == SmsCode.Ok
                                        ? _jsonProvider
                                            .Deserialize <SendVoiceSmsSuccessResponseDto>(
                                        response.Data).CallId
                                        : "",
                                    RequestId = res.RequestId,
                                    Msg = res.Message
                                })
                            });
                        }
                    }
                }
            }
            catch (ServerException e)
            {
            }

            return(new SmsResponseDto <SendSmsResponseDto>()
            {
                Code = SmsCode.Unknown,
                Msg = "发送异常"
            });
        }
Ejemplo n.º 2
0
 public async Task <int> InsertAsync(SmsCode entity)
 {
     if (entity == null)
     {
         throw new ArgumentNullException("SmsCode");
     }
     return(await _SmsCodeRepository.InsertAsync(entity));
 }
Ejemplo n.º 3
0
        public async Task <int> DeleteAsync(SmsCode entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("SmsCode");
            }

            //entity.Deleted = true;
            return(await _SmsCodeRepository.DeleteAsync(entity));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Setting(ChangePasswordViewModel model)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            if (model.NewPassword != null && model.OldPassword != null)
            {
                IdentityResult result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

                if (result.Succeeded)
                {
                    return(RedirectToAction("Cabinet", "CustomManage"));
                }
                else
                {
                    ModelState.AddModelError("", "Неправильный текущи пароль");
                }
            }
            else if (model.PhoneNumber != null)
            {
                var number = _userManager.Users.FirstOrDefault(p => p.PhoneNumber == model.PhoneNumber);

                if (number != null)
                {
                    ModelState.AddModelError("", "Такой номер уже существует");
                }
                else
                {
                    Random ran  = new Random();
                    int    code = ran.Next(11111, 99999);

                    SmsCode sms = new SmsCode {
                        NewPhoneNumber = model.PhoneNumber, SMSCode = code.ToString(), OldPhoneNumber = user.PhoneNumber
                    };
                    db.SmsCodes.Add(sms);
                    await db.SaveChangesAsync();

                    HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create($"https://sms.ru/sms/send?api_id=70E095C7-C999-495D-31B6-5FBE4AB00C59&to={model.PhoneNumber}&msg={code}&json=1");

                    HttpWebResponse        myResp           = (HttpWebResponse)myReq.GetResponse();
                    System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
                    string responseString = respStreamReader.ReadToEnd();
                    respStreamReader.Close();
                    myResp.Close();

                    return(RedirectToAction("NumberSetting", "CustomManage", new { model.PhoneNumber }));
                }
            }
            return(View());
        }
Ejemplo n.º 5
0
        public async Task <bool> CodeIsValidAsync(string phone, int code)
        {
            SmsCode sms = await smsRepository.FirstOrDefaultAsync(s => s.Phone == phone && s.Code == code);

            if (sms != null)
            {
                await smsRepository.DeleteAsync(sms);

                return(true);
            }

            return(false);
        }
Ejemplo n.º 6
0
        private async Task DBInsertSMSCodeAsync(string phone, int code)
        {
            var smsCode = new SmsCode
            {
                Phone     = phone,
                Code      = code,
                TimeStamp = DateTime.Now
            };

            using (var db = new DbContext(fixture.ConnectionString))
            {
                await db.InsertAsync(smsCode);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 验证验证码是否正确
        /// </summary>
        /// <param name="code">验证码对象</param>
        /// <returns>Result</returns>
        public Result <object> verifyCode(SmsCode code)
        {
            var limitKey = Util.hash("VerifyCode" + code.type + code.mobile);
            var surplus  = Params.callManage.getSurplus(limitKey, 10);

            if (surplus > 0)
            {
                return(result.tooFrequent(surplus));
            }

            var verify = Core.verifySmsCode(code.type, code.mobile, code.code, !code.remove);

            return(verify ? result.success() : result.smsCodeError());
        }
        public async Task <IActionResult> Forget_Password(ForgetPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var number = _userManager.Users.FirstOrDefault(p => p.PhoneNumber == model.PhoneNumber);
                if (number != null)
                {
                    SmsCode smsnumber = db.SmsCodes.FirstOrDefault(p => p.NewPhoneNumber == model.PhoneNumber);
                    if (smsnumber != null)
                    {
                        IEnumerable <SmsCode> smsenum = db.SmsCodes;
                        foreach (var b in smsenum)
                        {
                            if (b.NewPhoneNumber == model.PhoneNumber)
                            {
                                db.SmsCodes.Remove(b);
                            }
                        }
                        await db.SaveChangesAsync();
                    }
                    gert = ran.Next(11111, 66666);

                    SmsCode sms = new SmsCode {
                        NewPhoneNumber = model.PhoneNumber, SMSCode = gert.ToString()
                    };
                    await db.SmsCodes.AddAsync(sms);

                    await db.SaveChangesAsync();


                    HttpWebRequest         myReq            = (HttpWebRequest)WebRequest.Create($"https://sms.ru/sms/send?api_id=70E095C7-C999-495D-31B6-5FBE4AB00C59&to={model.PhoneNumber}&msg={gert}&json=1");
                    HttpWebResponse        myResp           = (HttpWebResponse)myReq.GetResponse();
                    System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
                    string responseString = respStreamReader.ReadToEnd();
                    respStreamReader.Close();
                    myResp.Close();


                    return(RedirectToAction("Forget_Password_Confirm", "Account", new { model.PhoneNumber }));
                }
                ModelState.AddModelError("", "Пользователь с таким номером не существует...");
            }
            return(View(model));
        }
Ejemplo n.º 9
0
        public async Task SendCodeAsync(string phone)
        {
            // TODO: uncomment this
            //int code = rnd.Next(1000, 9999);
            int     code = 1111;
            SmsCode sms  = await smsRepository.FirstOrDefaultAsync(s => s.Phone == phone);

            if (sms == null)
            {
                await smsRepository.InsertAsync(new SmsCode { Phone = phone, Code = code, TimeStamp = DateTime.Now });
            }
            else
            {
                sms.Code      = code;
                sms.TimeStamp = DateTime.Now;
                await smsRepository.UpdateAsync(sms);
            }

            // TODO: send SMS via some service
        }
        public async Task <IActionResult> Accounty(PhoneViewModel model, string role, string Number, bool?truefalse)
        {
            if (ModelState.IsValid && Number != null)
            {
                var num = await db.SmsCodes.FirstOrDefaultAsync(p => p.NewPhoneNumber == model.Number);

                if (num != null)
                {
                    db.SmsCodes.Remove(num);
                }

                var user = await _userManager.Users.FirstOrDefaultAsync(p => p.PhoneNumber == model.Number);

                if (user != null)
                {
                    ModelState.AddModelError("", "Токой номер уже существует! Если это ваш намер, тогда нажмите на ссылку <<Забыл пороль>>");
                    return(View(model));
                }

                Number = model.Number;
                gert   = ran.Next(11111, 66666);

                HttpWebRequest         myReq            = (HttpWebRequest)WebRequest.Create($"https://sms.ru/sms/send?api_id=70E095C7-C999-495D-31B6-5FBE4AB00C59&to={model.Number}&msg={gert}&json=1");
                HttpWebResponse        myResp           = (HttpWebResponse)myReq.GetResponse();
                System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
                string responseString = respStreamReader.ReadToEnd();
                respStreamReader.Close();
                myResp.Close();


                SmsCode sms = new SmsCode {
                    NewPhoneNumber = model.Number, SMSCode = gert.ToString()
                };
                await db.SmsCodes.AddAsync(sms);

                await db.SaveChangesAsync();

                return(RedirectToAction("Register", "Account", new { role, model.Number }));
            }
            return(View(model));
        }
Ejemplo n.º 11
0
        public IHttpActionResult sendSmsCode(SmsCodeDto dto)
        {
            Random  rnd = new Random();
            SmsCode sms = new SmsCode();

            sms.PlainCode = rnd.Next(1001, 9999).ToString();
            sms.Mobiphone = dto.Mobiphone;
            sms.UserIp    = HttpContext.Current.Request.UserHostAddress;
            _context.SmsCodes.Add(sms);
            _context.SaveChanges();

            SendSms(dto.Mobiphone, sms.PlainCode);

            sms.State = 2;
            _context.SaveChanges();

            ApiResult rlt = new ApiResult()
            {
                Code = 200,
                Msg  = "验证码发送成功"
            };

            return(Ok(rlt));
        }
Ejemplo n.º 12
0
        public async Task <IHttpActionResult> GetSmsCode([FromBody] string PhoneNumber)
        {
            var result = new ApiResult <string>();

            CCPRestSDK.CCPRestSDK api = new CCPRestSDK.CCPRestSDK();
            //ip格式如下,不带https://
            bool isInit = api.init("app.cloopen.com", "8883");

            api.setAccount("8aaf0708588b1d2301588ff10eb00346", "3e902b274a844cb899b672bcaf4fde2f");
            api.setAppId("8aaf0708588b1d2301588ff10f16034b");

            var expireMin  = 10;
            var expireTime = DateTime.Now.AddMinutes(expireMin);

            //1分钟内不允许再次发送
            var limitTime      = DateTime.Now.AddMinutes(-1);
            var hasSendInLimit = SmsCodeService.GetAll().Count(x => x.PhoneNumber == PhoneNumber && x.CreateTime > limitTime) > 0;

            if (hasSendInLimit)
            {
                result.Code = 3;
                result.Info = "短信已发送给您,请耐心等待!";
                return(Ok(result));
            }

            var smsCode = new SmsCode()
            {
                Code        = getRandCode(6),
                CodeType    = CodeType.Register,
                CreateTime  = DateTime.Now,
                ExpireTime  = expireTime,
                PhoneNumber = PhoneNumber
            };

            try
            {
                if (isInit)
                {
                    Dictionary <string, object> retData = api.SendTemplateSMS(PhoneNumber, "1", new string[] { smsCode.Code, expireMin.ToString() });

                    if (retData["statusCode"].ToString() == "000000")
                    {
                        await SmsCodeService.InsertAsync(smsCode);
                    }
                }
                else
                {
                    result.Code = 2;
                    result.Info = "短信验证码服务,初始化失败!";
                    return(Ok(result));
                }
            }
            catch (Exception exc)
            {
                result.Code = 1;
                result.Info = exc.Message;
                return(Ok(result));
            }

            result.Info = "短信发送成功";
            result.Data = "success";
            return(Ok(result));
        }