/// <summary>
 /// 校验验证码
 /// </summary>
 /// <param name="mobile"></param>
 /// <param name="code"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 public bool VerifyCode(string mobile, int code, int type, out int codestate)
 {
     //to do sth.要写入配置文件里
     codestate = 0;
     return(MobileVerificationDao.Verify(mobile, code,
                                         DateTime.Now.AddMinutes(-5), type, out codestate));
 }
        /// <summary>
        /// 生成ISV验证码,并发送到用户手机
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="userId"></param>
        /// <param name="isv"></param>
        /// <param name="mobile"></param>
        /// <param name="type">0:注册验证码</param>
        /// <returns></returns>
        public bool SendISVMessage(int tenantId, string isv, string mobile, out string msg, int type = 0)
        {
            ArgumentHelper.AssertPositive(tenantId, "tenantId is 0");
            ArgumentHelper.AssertNotNullOrEmpty(isv, "isv is null");
            ArgumentHelper.AssertNotNullOrEmpty(mobile, "mobile is null");

            msg = string.Empty;
            if (string.IsNullOrEmpty(isv) || string.IsNullOrWhiteSpace(mobile))
            {
                msg = string.Format("isv或手机号不能为空,isv:{0},mobile:{1}", isv, mobile);
                return(false);
            }
            var check = MobileVerificationDao.Get(mobile, type, DateTime.Now.AddMinutes(-1));

            if (check == 1)
            {
                msg = string.Format("验证码发送过于频繁");
                return(false);
            }
            var isvSMSTemplate = GetISVSMSTemplate(isv, mobile, type);

            if (isvSMSTemplate == null)
            {
                msg = string.Format("{0}未找到设置,mobile:{1},type:{2}", isv, mobile, type);
                return(false);
            }

            var code = GetCode();

            //将验证码和手机号存入数据库
            MobileVerificationDao.Add(mobile, code, type);
            //发送短信
            string message = string.Format(isvSMSTemplate.Message, code);
            var    result  =
                ProviderGateway.SMSProvider.SendISVMobileValCode(tenantId, isv, isvSMSTemplate.SMSChannelId, message, mobile,
                                                                 SMSType.MobileVerification, null);

            if (!result)
            {
                MobileVerificationDao.Abate(mobile, code, type);
                msg = string.Format("发送失败,tenantId:{0},isv:{1},mobile:{2}", tenantId, isv, mobile);
                return(false);
            }

            return(true);
        }
 /// <summary>
 /// 校验验证码状态及验证时间
 /// </summary>
 /// <param name="mobile"></param>
 /// <param name="code"></param>
 /// <param name="type">0:注册验证码 1:登录动态验证码</param>
 /// <returns></returns>
 public bool CheckCode(string mobile, int code, int type)
 {
     return(MobileVerificationDao.Check(mobile, code, type));
 }