/// <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); } } }
/// <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); } } }
/// <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)); } }
/// <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); }
/// <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); }
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); }