/// <summary> /// 发送密码修改成功短信--解志辉 /// </summary> /// <param name="mobile">手机号</param> protected void SendMsg(string mobile) { #region 发送密码修改成功短信 var smstype = (int)Enum.Parse(typeof(SmsType), SmsType.修改密码.ToString()); var messageId = 17; //密码修改成功 var smsEntity = _logic.GetSmsEmailEntity(1, messageId); // 获取密码修改成功内容 if (smsEntity != null) { var cnt = smsEntity.SEContext.Replace("#DATATIME#", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // var rx = SmsHelper.Send(mobile, cnt); var pm = new SmsRecordEntity { phone_number = mobile, sendtime = DateTime.Now, senduserid = 0, smstype = smstype, smscontext = cnt, orderid = 1, vcode = "", ip = Settings.Instance.ClientIp }; _recordLogic.AddRecord(pm); } #endregion }
/// <summary> /// 获取3分钟之内 历史发送记录. /// </summary> /// <param name="mobile">The client ip.</param> /// <param name="t1">The t1.</param> /// <param name="t2">The t2.</param> /// <returns>SmsRecordEntity.</returns> public SmsRecordEntity SelectHistory(string mobile, int t1, int t2) { string sql = "select top 1 sms_record_id,smscontext,phone_number,hits from hx_td_SMS_record where ( smstype=" + t1 + " or smstype=" + t2 + " ) and phone_number='" + mobile + "' and DATEDIFF(MINUTE,sendtime,getDate())<3 order by sms_record_id desc"; var ds = DbHelper.Query(sql); if (DataSetIsNotNull(ds)) { var se = new SmsRecordEntity { smscontext = ds.Tables[0].Rows[0]["smscontext"].ToString(), hits = ConvertHelper.ParseValue(ds.Tables[0].Rows[0]["hits"], 0), sms_record_id = ConvertHelper.ParseValue(ds.Tables[0].Rows[0]["sms_record_id"], 0) }; return(se); } return(null); }
/// <summary> /// /// </summary> public async Task SaveLog(int appId, string content, ValidationType type, string phone, string ip, bool isSuccess, string code, int expiresMinute, string smsMsgId, string smsMsg) { var smsRecordEntity = new SmsRecordEntity { SendTime = DateTime.Now, ClientId = appId, Content = content, SendType = type.ToString(), Receiver = phone, IpAddress = ip, SendResult = isSuccess, Remark = isSuccess ? $"发送成功,msg_id:{smsMsgId}" : $"发送失败,错误描述:{smsMsg},msg_id:{smsMsgId}" }; await _smsRecordRepository.InsertAsync(smsRecordEntity); await _unitOfWork.SaveChangesAsync(); }
public Int32 AddRecord(SmsRecordEntity srEntity) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into hx_td_SMS_record("); strSql.Append("senduserid,phone_number,smscontext,smstype,sendtime,orderid,vcode,ip)"); strSql.Append(" values ("); strSql.Append("@senduserid,@phone_number,@smscontext,@smstype,@sendtime,@orderid,@vcode,@ip)"); strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@senduserid", SqlDbType.Int, 4), new SqlParameter("@phone_number", SqlDbType.VarChar, 11), new SqlParameter("@smscontext", SqlDbType.VarChar, 4000), new SqlParameter("@smstype", SqlDbType.Int, 4), new SqlParameter("@sendtime", SqlDbType.DateTime), new SqlParameter("@orderid", SqlDbType.Decimal, 28), new SqlParameter("@vcode", SqlDbType.VarChar, 50), new SqlParameter("@ip", SqlDbType.VarChar, 50) }; parameters[0].Value = srEntity.senduserid; parameters[1].Value = srEntity.phone_number; parameters[2].Value = srEntity.smscontext; parameters[3].Value = srEntity.smstype; parameters[4].Value = srEntity.sendtime; parameters[5].Value = srEntity.orderid; parameters[6].Value = srEntity.vcode; parameters[7].Value = srEntity.ip; var obj = DbHelper.GetSingle(strSql.ToString(), parameters); if (obj == null) { return(0); } return(Convert.ToInt32(obj)); }
/// <summary> /// 更新发送记录. /// </summary> /// <param name="ent">The ent.</param> public void UpdateRecord(SmsRecordEntity ent) { _dal.UpdateRecord(ent); }
public Int32 AddRecord(SmsRecordEntity srEntity) { return(_dal.AddRecord(srEntity)); }
///// <summary> ///// 获取绑定手机号验证码短信接口--解志辉 ///// </summary> ///// <param name="reqst">The reqst.</param> ///// <returns>ResultInfo<System.String>.</returns> ///// 创 建 者:解志辉 ///// 创建日期:2016-05-25 16:25:37 //[HttpPost] //public ResultInfo<string> GetBindMobileCode(RequestParam<SmsEntity> reqst) //{ // var ri = new ResultInfo<string>("99999"); // try // { // var mobile = reqst.body.mobile; // if (string.IsNullOrEmpty(mobile)) // { // ri.code = "1000000000"; // } // else if (!ValidateHelper.IsHandset(mobile)) // { // ri.code = "1000000001"; // } // else if (!_logic.CheckMobile(mobile)) // { // ri.code = "1000000010"; //未找到相关记录 // } // else // { // #region 发送修改密码短信 // var res = SendSms(mobile, 1, 25); // return res; // #endregion // } // ri.message = Settings.Instance.GetErrorMsg(ri.code); // return ri; // } // catch (Exception ex) // { // LoggerHelper.Error(ex.ToString()); // LoggerHelper.Error(JsonHelper.Entity2Json(reqst)); ri.code = "500"; // ri.message = Settings.Instance.GetErrorMsg(ri.code); // return ri; // } //} ///// <summary> ///// 获取修改手机号验证码短信接口--解志辉 ///// </summary> ///// <param name="reqst">The reqst.</param> ///// <returns>ResultInfo<System.String>.</returns> ///// 创 建 者:解志辉 ///// 创建日期:2016-05-25 16:20:03 //[HttpPost] //public ResultInfo<string> GetModifyMobileCode(RequestParam<RequestBindMobileEntity> reqst) //{ // var ri = new ResultInfo<string>("99999"); // try // { // var userId = ConvertHelper.ParseValue(reqst.body.userId, 0); // var mobile = _logic.SelectUserMobileByUserId(userId);//当前用户手机号 // if (string.IsNullOrEmpty(reqst.body.mobile)) // { // ri.code = "1000000000"; // } // else if (!ValidateHelper.IsHandset(reqst.body.mobile)) // { // ri.code = "1000000001"; // } // else if (mobile != reqst.body.mobile) // { // ri.code = "1000000013"; // } // else // { // #region 发送短信 // var res = SendSms(mobile, 1,35); // return res; // #endregion // } // ri.message = Settings.Instance.GetErrorMsg(ri.code); // return ri; // } // catch (Exception ex) // { // LoggerHelper.Error(ex.ToString()); // LoggerHelper.Error(JsonHelper.Entity2Json(reqst)); ri.code = "500"; // ri.message = Settings.Instance.GetErrorMsg(ri.code); // return ri; // } //} /// <summary> /// 发送短信--解志辉 /// </summary> /// <param name="mobile"></param> /// <param name="type"></param> /// <param name="messageId"></param> /// <returns></returns> protected ResultInfo <string> SendSms(string mobile, int type, int messageId) { var ri = new ResultInfo <string>("99999"); try { #region 防止短信过度频繁发送 #region First 60之内不能再次发送短信 var cacheKey = "reg_member_get_code_time_" + mobile; var cv = CacheHelper.GetSystemCache(cacheKey); if (cv == null) { CacheHelper.SetCache(cacheKey, DateTime.Now, 1); } else { var dte = ConvertHelper.ParseValue(cv, DateTime.MinValue); if (dte != DateTime.MinValue) { var sec = Settings.Instance.DateDiff("Second", dte, DateTime.Now); if (sec > 60) { CacheHelper.ClearCache(cacheKey); } else { ri.code = "1000000005"; //短信发送太频繁!请稍后再试 } } } #endregion #region Second 同IP间隔60S之后才能再次发送 同时一个IP最多发送8条注册短信 var t1 = (int)Enum.Parse(typeof(SmsType), SmsType.短信验证码.ToString()); var t2 = (int)Enum.Parse(typeof(SmsType), SmsType.语音短信验证码.ToString()); if (!_recordLogic.CheckInOneMinute(Settings.Instance.ClientIp, t1, t2)) { ri.code = "1000000005"; //短信发送太频繁!请稍后再试 } #endregion #region Third 同一IP最多发送8条同类型短信 if (_recordLogic.CheckIpSendTimes(Settings.Instance.ClientIp, t1, t2) >= 8) { ri.code = "1000000006"; //短信发送太频繁!请与客服联系 } #endregion #endregion #region 验证3分钟之内有没有验证码记录,有则发送 var ent = _recordLogic.SelectHistory(mobile, t1, t2); if (ent != null) { if (ent.hits < 4) { ent.orderid = SendSMS.Send(mobile, ent.smscontext); _recordLogic.UpdateRecord(ent); } else { ri.code = "1000000006"; //短信发送太频繁!请与客服联系 } } else //不存在记录,生成新验证码 { #region 生成验证码 发送短信并记录发送日志 var vcode = Utils.RndNum(6); var ebt = _logic.GetSmsEmailEntity(type, messageId); // 获取验证码邮件内容 var sbsms = new StringBuilder(ebt.SEContext); sbsms = sbsms.Replace("#CODE#", vcode); var pm = new SmsRecordEntity { phone_number = mobile, sendtime = DateTime.Now, senduserid = 0, smstype = t1, smscontext = sbsms.ToString(), orderid = SendSMS.Send(mobile, sbsms.ToString()), vcode = vcode, ip = Settings.Instance.ClientIp }; _recordLogic.AddRecord(pm); #endregion ri.code = "1000000099"; ri.body = vcode; } #endregion ri.message = Settings.Instance.GetErrorMsg(ri.code); return(ri); } catch (Exception ex) { LoggerHelper.Error(ex.ToString()); LoggerHelper.Error("send phone:" + mobile + "type:" + type + " messageId:" + messageId); ri.code = "500"; ri.message = Settings.Instance.GetErrorMsg(ri.code); return(ri); } }
/// <summary> /// 更新发送记录. /// </summary> /// <param name="ent">The ent.</param> public void UpdateRecord(SmsRecordEntity ent) { var sql = "update hx_td_SMS_record set orderid=" + ent.orderid + ",hits=hits+1 where sms_record_id=" + ent.sms_record_id; DbHelper.ExecuteSql(sql); }