Example #1
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public BCW.Model.tb_Validate Gettb_Validate(int ID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 ID,Phone,IP,Time,Flag,codeTime,mesCode,type,source from tb_Validate ");
            strSql.Append(" where ID=@ID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@ID", SqlDbType.Int, 4)
            };
            parameters[0].Value = ID;

            BCW.Model.tb_Validate model = new BCW.Model.tb_Validate();
            using (SqlDataReader reader = SqlHelper.ExecuteReader(strSql.ToString(), parameters))
            {
                if (reader.HasRows)
                {
                    reader.Read();
                    model.ID       = reader.GetInt32(0);
                    model.Phone    = reader.GetString(1);
                    model.IP       = reader.GetString(2);
                    model.Time     = reader.GetDateTime(3);
                    model.Flag     = reader.GetInt32(4);
                    model.codeTime = reader.GetDateTime(5);
                    model.mesCode  = reader.GetString(6);
                    model.type     = reader.GetInt32(7);
                    model.source   = reader.GetInt32(8);
                    return(model);
                }
                else
                {
                    return(null);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public BCW.Model.tb_Validate Gettb_Validate(string Phone, int type)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 ID,Phone,IP,Time,Flag,codeTime,mesCode,source from tb_Validate ");
            strSql.Append(" where Phone=@Phone and type=@type order by Time desc ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@Phone", SqlDbType.NVarChar, 50),
                new SqlParameter("@type",  SqlDbType.Int, 4)
            };
            parameters[0].Value = Phone;
            parameters[1].Value = type;
            BCW.Model.tb_Validate model = new BCW.Model.tb_Validate();
            using (SqlDataReader reader = SqlHelper.ExecuteReader(strSql.ToString(), parameters))
            {
                if (reader.HasRows)
                {
                    reader.Read();
                    model.ID       = reader.GetInt32(0);
                    model.Phone    = reader.GetString(1);
                    model.IP       = reader.GetString(2);
                    model.Time     = reader.GetDateTime(3);
                    model.Flag     = reader.GetInt32(4);
                    model.codeTime = reader.GetDateTime(5);
                    model.mesCode  = reader.GetString(6);
                    model.source   = reader.GetInt32(7);
                    return(model);
                }
                else
                {
                    return(null);
                }
            }
        }
Example #3
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(BCW.Model.tb_Validate model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into tb_Validate(");
            strSql.Append("Phone,IP,Time,Flag,codeTime,mesCode,type,source)");
            strSql.Append(" values (");
            strSql.Append("@Phone,@IP,@Time,@Flag,@codeTime,@mesCode,@type,@source)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@Phone",    SqlDbType.NVarChar,  50),
                new SqlParameter("@IP",       SqlDbType.NVarChar,  50),
                new SqlParameter("@Time",     SqlDbType.DateTime),
                new SqlParameter("@Flag",     SqlDbType.Int,        4),
                new SqlParameter("@codeTime", SqlDbType.DateTime),
                new SqlParameter("@mesCode",  SqlDbType.NVarChar,  50),
                new SqlParameter("@type",     SqlDbType.Int,        4),
                new SqlParameter("@source",   SqlDbType.Int, 4)
            };
            parameters[0].Value = model.Phone;
            parameters[1].Value = model.IP;
            parameters[2].Value = model.Time;
            parameters[3].Value = model.Flag;
            parameters[4].Value = model.codeTime;
            parameters[5].Value = model.mesCode;
            parameters[6].Value = model.type;
            parameters[7].Value = model.source;

            object obj = SqlHelper.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(1);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
Example #4
0
        /// <summary>
        /// 取得每页记录
        /// </summary>
        /// <param name="p_pageIndex">当前页</param>
        /// <param name="p_pageSize">分页大小</param>
        /// <param name="p_recordCount">返回总记录数</param>
        /// <param name="strWhere">查询条件</param>
        /// <returns>IList tb_Validate</returns>
        public IList <BCW.Model.tb_Validate> Gettb_Validates(int p_pageIndex, int p_pageSize, string strWhere, out int p_recordCount)
        {
            IList <BCW.Model.tb_Validate> listtb_Validates = new List <BCW.Model.tb_Validate>();
            string sTable     = "tb_Validate";
            string sPkey      = "id";
            string sField     = "ID,Phone,IP,Time,Flag,codeTime,mesCode,type,source";
            string sCondition = strWhere;
            string sOrder     = "ID Desc";
            int    iSCounts   = 0;

            using (SqlDataReader reader = SqlHelper.RunProcedureMe(sTable, sPkey, sField, p_pageIndex, p_pageSize, sCondition, sOrder, iSCounts, out p_recordCount))
            {
                //计算总页数
                if (p_recordCount > 0)
                {
                    int pageCount = BasePage.CalcPageCount(p_recordCount, p_pageSize, ref p_pageIndex);
                }
                else
                {
                    return(listtb_Validates);
                }
                while (reader.Read())
                {
                    BCW.Model.tb_Validate objtb_Validate = new BCW.Model.tb_Validate();
                    objtb_Validate.ID       = reader.GetInt32(0);
                    objtb_Validate.Phone    = reader.GetString(1);
                    objtb_Validate.IP       = reader.GetString(2);
                    objtb_Validate.Time     = reader.GetDateTime(3);
                    objtb_Validate.Flag     = reader.GetInt32(4);
                    objtb_Validate.codeTime = reader.GetDateTime(5);
                    objtb_Validate.mesCode  = reader.GetString(6);
                    objtb_Validate.type     = reader.GetInt32(7);
                    objtb_Validate.source   = reader.GetInt32(8);
                    listtb_Validates.Add(objtb_Validate);
                }
            }
            return(listtb_Validates);
        }
Example #5
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public void Update(BCW.Model.tb_Validate model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update tb_Validate set ");
            strSql.Append("Phone=@Phone,");
            strSql.Append("IP=@IP,");
            strSql.Append("Time=@Time,");
            strSql.Append("Flag=@Flag,");
            strSql.Append("codeTime=@codeTime,");
            strSql.Append("mesCode=@mesCode,");
            strSql.Append("type=@type");
            strSql.Append("source=@source");
            strSql.Append(" where ID=@ID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@ID",       SqlDbType.Int,        4),
                new SqlParameter("@Phone",    SqlDbType.NVarChar,  50),
                new SqlParameter("@IP",       SqlDbType.NVarChar,  50),
                new SqlParameter("@Time",     SqlDbType.DateTime),
                new SqlParameter("@Flag",     SqlDbType.Int,        4),
                new SqlParameter("@codeTime", SqlDbType.DateTime),
                new SqlParameter("@mesCode",  SqlDbType.NVarChar,  50),
                new SqlParameter("@type",     SqlDbType.Int,        4),
                new SqlParameter("@source",   SqlDbType.Int, 4)
            };
            parameters[0].Value = model.ID;
            parameters[1].Value = model.Phone;
            parameters[2].Value = model.IP;
            parameters[3].Value = model.Time;
            parameters[4].Value = model.Flag;
            parameters[5].Value = model.codeTime;
            parameters[6].Value = model.mesCode;
            parameters[7].Value = model.type;
            parameters[8].Value = model.source;

            SqlHelper.ExecuteSql(strSql.ToString(), parameters);
        }
Example #6
0
        public SmsData SendSms(string _mobile, int _type)
        {
            SmsData _smsData = new SmsData();

            //检查手机号码是否为空
            if (string.IsNullOrEmpty(_mobile))
            {
                _smsData.header.status     = ERequestResult.faild;
                _smsData.header.statusCode = MOBILE_ERROR_CODE.MOBILE_PHONE_ISNULL;
                return(_smsData);
            }

            //检查手机号码是否合法
            if (Regex.IsMatch(_mobile, @"^(?:11|12|13|14|15|16|17|18|19)\d{9}$") == false)
            {
                _smsData.header.status     = ERequestResult.faild;
                _smsData.header.statusCode = MOBILE_ERROR_CODE.MOBILE_PHONE_VERIFY;
                return(_smsData);
            }


            char[] character = { '0', '1', '2', '3', '4', '5', '6', '8', '9' };
            string mesCode   = string.Empty; //手机验证码
            Random rnd       = new Random();

            //生成验证码字符串
            for (int i = 0; i < 4; i++)
            {
                mesCode += character[rnd.Next(character.Length)];
            }


            int tm         = int.Parse(ub.GetSub("expireTime", xmlPath));             //短信过期时间(分钟)
            int total      = int.Parse(ub.GetSub("dayCount", xmlPath));
            int ipCount    = int.Parse(ub.GetSub("IPCount", xmlPath));
            int phoneCount = int.Parse(ub.GetSub("phoneCount", xmlPath));
            int msgremain  = int.Parse(ub.GetSub("msgremain", xmlPath));
            int callID     = int.Parse(ub.GetSub("callID", xmlPath));

            if (new BCW.BLL.tb_Validate().ExistsPhone(_mobile))  //不是第一次获取短信
            {
                DataSet  data       = new BCW.BLL.tb_Validate().GetList(" Top 1 *", "Phone=" + _mobile + " order by time desc");
                DateTime changeTime = Convert.ToDateTime(data.Tables[0].Rows[0]["Time"].ToString());
                int      changeday  = changeTime.DayOfYear;
                if ((DateTime.Now.DayOfYear - changeday) >= 1)  //上一条短信不是在当天
                {
                    BCW.Model.tb_Validate validate = new BCW.Model.tb_Validate();
                    validate.Phone    = _mobile;
                    validate.IP       = Utils.GetUsIP();
                    validate.Time     = DateTime.Now.AddMinutes(0);
                    validate.Flag     = 1;
                    validate.mesCode  = mesCode;
                    validate.codeTime = DateTime.Now.AddMinutes(tm);
                    validate.type     = _type;
                    validate.source   = 1;
                    Soap57ProviderService MesExt = new Soap57ProviderService();
                    string result = "";
                    result = MesExt.Submit(ub.GetSub("smsUsid", xmlPath), ub.GetSub("smsUsPwd", xmlPath), ub.GetSub("smsAccount", xmlPath), "【" + ub.GetSub("SiteName", "/Controls/wap.xml") + "】亲,您的验证码是:" + mesCode, _mobile);
                    string[] results = result.Split('#');
                    if ((int.Parse(results[2]) / 80) < msgremain)
                    {
                        new BCW.BLL.Guest().Add(0, callID, "", "剩余短信数量低于" + msgremain + "条了,请注意!");
                    }
                    if (results[8] == "0")
                    {
                        new BCW.BLL.tb_Validate().Add(validate);

                        _smsData.header.status = ERequestResult.success;
                        _smsData.monbile       = _mobile;
                        _smsData.smsVerifyCode = mesCode;
                        return(_smsData);
                    }
                }
                else//当天时间内
                {
                    //获取当天的短信数量
                    DataSet dt2 = new BCW.BLL.tb_Validate().GetList("*", "Phone=" + _mobile + " and time>='" + DateTime.Now.ToShortDateString() + "' order by time desc");
                    if (dt2.Tables[0].Rows.Count >= total)  //当天时间内超过特定数
                    {
                        _smsData.header.status     = ERequestResult.faild;
                        _smsData.header.statusCode = MOBILE_ERROR_CODE.SMS_FREQUENTLY_TODAY;
                        return(_smsData);
                    }
                    DateTime check = DateTime.Now.AddMinutes(-30);
                    if (check.DayOfYear < DateTime.Now.DayOfYear)
                    {
                        check = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                    }
                    else
                    {
                        check = DateTime.Now.AddMinutes(-30);
                    }
                    //获取最近半小时的短信量
                    string  str = "Phone=" + _mobile + " and time>='" + check + "' and time <='" + DateTime.Now + "' order by time desc";
                    DataSet dt1 = new BCW.BLL.tb_Validate().GetList("*", str);
                    if (data.Tables[0].Rows[0]["Flag"].ToString() == "0")      //最新一条显示当天不能发送了
                    {
                        _smsData.header.status     = ERequestResult.faild;
                        _smsData.header.statusCode = MOBILE_ERROR_CODE.SMS_FREQUENTLY_FLAG;
                        return(_smsData);
                    }
                    string IP = Utils.GetUsIP();
                    //查看限制IP
                    string  str1 = "IP= '" + IP + "' and time>='" + check + "' and time <='" + DateTime.Now + "' order by time desc";
                    DataSet dt3  = new BCW.BLL.tb_Validate().GetList("*", str1);
                    if (dt3.Tables[0].Rows.Count >= ipCount)  //半小时内超过10条
                    {
                        ////跟新标示
                        //int ID = int.Parse(dt3.Tables[0].Rows[0]["ID"].ToString());
                        //new BCW.BLL.tb_Validate().UpdateFlag(0, ID);
                        _smsData.header.status     = ERequestResult.faild;
                        _smsData.header.statusCode = MOBILE_ERROR_CODE.SMS_FREQUENTLY_IP;
                        return(_smsData);
                    }
                    if (dt1.Tables[0].Rows.Count >= phoneCount)  //半小时内超过10条
                    {
                        //跟新标示
                        int ID = int.Parse(dt1.Tables[0].Rows[0]["ID"].ToString());
                        new BCW.BLL.tb_Validate().UpdateFlag(0, ID);
                        _smsData.header.status     = ERequestResult.faild;
                        _smsData.header.statusCode = MOBILE_ERROR_CODE.SMS_FREQUENTLY_PHONE;
                        return(_smsData);
                    }
                    else
                    {
                        BCW.Model.tb_Validate validate = new BCW.Model.tb_Validate();
                        validate.Phone    = _mobile;
                        validate.IP       = Utils.GetUsIP();
                        validate.Time     = DateTime.Now.AddMinutes(0);
                        validate.Flag     = 1;
                        validate.mesCode  = mesCode;
                        validate.codeTime = DateTime.Now.AddMinutes(tm);
                        validate.type     = _type;
                        validate.source   = 1;
                        Soap57ProviderService MesExt = new Soap57ProviderService();
                        string result = "";
                        result = MesExt.Submit(ub.GetSub("smsUsid", xmlPath), ub.GetSub("smsUsPwd", xmlPath), ub.GetSub("smsAccount", xmlPath), "【" + ub.GetSub("SiteName", "/Controls/wap.xml") + "】亲,您的验证码是:" + mesCode, _mobile);
                        string[] results = result.Split('#');
                        if ((int.Parse(results[2]) / 80) < msgremain)
                        {
                            new BCW.BLL.Guest().Add(0, callID, "", "剩余短信数量低于" + msgremain + "条了,请注意!");
                        }
                        if (results[8] == "0")
                        {
                            new BCW.BLL.tb_Validate().Add(validate);
                            _smsData.header.status = ERequestResult.success;
                            _smsData.monbile       = _mobile;
                            _smsData.smsVerifyCode = mesCode;
                            return(_smsData);
                        }
                    }
                }
            }
            else
            {
                BCW.Model.tb_Validate validate = new BCW.Model.tb_Validate();
                validate.Phone    = _mobile;
                validate.IP       = Utils.GetUsIP();
                validate.Time     = DateTime.Now.AddMinutes(0);
                validate.Flag     = 1;
                validate.mesCode  = mesCode;
                validate.codeTime = DateTime.Now.AddMinutes(tm);
                validate.type     = _type;
                validate.source   = 1;
                Soap57ProviderService MesExt = new Soap57ProviderService();
                string result = "";
                result = MesExt.Submit(ub.GetSub("smsUsid", xmlPath), ub.GetSub("smsUsPwd", xmlPath), ub.GetSub("smsAccount", xmlPath), "【" + ub.GetSub("SiteName", "/Controls/wap.xml") + "】亲,您的验证码是:" + mesCode, _mobile);
                string[] results = result.Split('#');
                if ((int.Parse(results[2]) / 80) < msgremain)
                {
                    new BCW.BLL.Guest().Add(0, callID, "", "剩余短信数量低于" + msgremain + "条了,请注意!");
                }
                if (results[8] == "0")
                {
                    new BCW.BLL.tb_Validate().Add(validate);
                    _smsData.header.status = ERequestResult.success;
                    _smsData.monbile       = _mobile;
                    _smsData.smsVerifyCode = mesCode;
                    return(_smsData);
                }
            }
            return(null);
        }