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); }
public RspUserResetPwd UserResetPwd(ReqUserResetPwd _reqData) { RspUserResetPwd _rspData = new RspUserResetPwd(); if (_reqData.accountId.Length == 11) { //检查手机号码是否合法 if (Regex.IsMatch(_reqData.accountId.ToString(), @"^(?:11|12|13|14|15|16|17|18|19)\d{9}$") == false) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.MOBILE_PHONE_VERIFY; return(_rspData); } //检查帐号(手机)是否存在 if (!new BCW.BLL.User().Exists(_reqData.accountId.ToString())) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.LOGIN_ACCOUNT_NOTFOUND; return(_rspData); } } else { //检查用户ID是否合法 if (Regex.IsMatch(_reqData.accountId.ToString(), @"^[0-9]\d*$") == false) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.SYS_USER_ACCOUNT_VERIFY; return(_rspData); } //检查帐号(ID)是否存在 if (!new BCW.BLL.User().Exists(int.Parse(_reqData.accountId))) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.LOGIN_ACCOUNT_NOTFOUND; return(_rspData); } //将ID变更为手机 _reqData.accountId = new BCW.BLL.User().GetMobile(int.Parse(_reqData.accountId)); } //检查密码是否合法 if (Regex.IsMatch(_reqData.newPwd, @"^[A-Za-z0-9]{6,20}$") == false) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.REGEDIT_PWD_VERIFY; return(_rspData); } //检查手机验证码是否正确 BCW.Model.tb_Validate _validate = new BCW.BLL.tb_Validate().Gettb_Validate(_reqData.accountId, 5); if (_validate == null) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.REGEDIT_VERIFYCODE_DIFF; return(_rspData); } //检查手机验证码是否有效 if (_validate.mesCode != _reqData.ValidateCode.ToString()) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.REGEDIT_VERIFYCODE_DIFF; return(_rspData); } //检查手机验证码是否过期 if (DateTime.Now > _validate.codeTime || _validate.Flag == 0) { _rspData.header.status = ERequestResult.faild; _rspData.header.statusCode = MOBILE_ERROR_CODE.REGEDIT_VERIFYCODE_EXPIRE; return(_rspData); } new BCW.BLL.User().UpdateUsPwd(_reqData.accountId, Utils.MD5Str(_reqData.newPwd)); _rspData.header.status = ERequestResult.success; return(_rspData); }