public ActionResult Notice(DateTime?BeginInDate, DateTime?EndInDate) { MessageCenter.Entity.QF_Message filter = new MessageCenter.Entity.QF_Message() { MasterName = "SmokeDetector", EndInDate = EndInDate, BeginInDate = BeginInDate, MsgReceiver = curentUser.AppCustomerID, MsgType = MessageCenter.Entity.MsgType.WeiXin }; if (BeginInDate == null && EndInDate == null) { filter.BeginInDate = DateTime.Now.AddDays(-30); filter.EndInDate = DateTime.Now; } if (EndInDate != null) { filter.EndInDate = EndInDate.GetValueOrDefault().AddDays(1); } List <MessageCenter.Entity.QR_Message> list = SMSProcessor.LoadMessageByMasterIDAndMasterName(filter); NoticeModel model = new NoticeModel(); model.MassageList = list; model.BeginInDate = BeginInDate; model.EndInDate = EndInDate; return(View(model)); }
public void ProcessWXMessage() { Stream reqstream = Request.InputStream; reqstream.Seek(0, SeekOrigin.Begin); string body = new StreamReader(reqstream).ReadToEnd(); var echostr = Request["echostr"]; var signature = Request["signature"]; var timestamp = Request["timestamp"]; var nonce = Request["nonce"]; string resp = "success"; if (CheckSignature(signature, timestamp, nonce)) { if (!string.IsNullOrEmpty(echostr)) { resp = echostr; } else { WXTextMessage wxresult = null; var result = WechatSenderService.GetWXMsgEntity(body); var textmessage = result is WXTextMessage; if (textmessage) { wxresult = result as WXTextMessage; if (wxresult.Content.Equals(IgnoreMessage, StringComparison.CurrentCultureIgnoreCase)) { var lastmsg = SMSProcessor.LoadLastMessageByMsgReceiver(wxresult.FromUserName); if (lastmsg != null) { MessageDA.UpdateSmsStatusAfterHandled(lastmsg.SysNo, true, true); if (wxresult != null) { WXTextMessage wXText = new WXTextMessage { ToUserName = wxresult.FromUserName, FromUserName = wxresult.ToUserName, CreateTime = WebPortalHelper.GetTimeStamp(), Content = "忽略当前报警信息成功!\n正在等待服务器响应!", MsgId = WebPortalHelper.GetGuidToLongID() }; resp = WechatSenderService.OpeationWXEntity(wXText); Logger.WriteLog(resp); } } } } } } Response.Write(resp); Response.End(); Response.Close(); }
public static int SendMsg <ParmaterTemplate>(int companySysNo, List <ReceiverInfo> receiverList, ParmaterTemplate parmater, bool bl) where ParmaterTemplate : BaseMsgTemplate { try { var msgList = GetMessageEntityList(companySysNo, receiverList, parmater, MessageStatus.Sent); if (msgList.Count == 0) { return(1);//未检测到匹配的消息模版! } if (parmater.RetryCount == 0) { foreach (var m in msgList) { m.Status = MessageStatus.Sent; } } if (msgList.Any()) { foreach (var msg in msgList) { //msg.Url = parmater.GetRealUrl(); if (msg.MsgType == MsgType.WeiXin) { WechatMessage wechatMsg = new WechatMessage() { ToUser = msg.MsgReceiver, TemplateId = msg.ExternalTemplateID, Url = msg.Url }; msg.TemplateParmaters.ForEach(item => { wechatMsg.Data.Add(item.Name, new WeiXinParam() { Value = item.Value, Color = item.Color }); }); SendMsgToDB(msg, (sysno) => { try { WechatSenderService.PushMessage(wechatMsg); MessageDA.UpdateSmsStatusAfterHandled(sysno, true); msg.SysNo = sysno; if (msg.LimitCount > 1) { FirstSendSucess(msg); } } catch (Exception ex) { MessageDA.UpdateSmsStatusAfterHandled(sysno, false); throw ex; } }); } else if (msg.MsgType == MsgType.SMS) { if (parmater.SendCount > 0) { //从数据库检测同模版发送且发送成功的条数 var sendedList = SMSProcessor.LoadMessageReSendCount(companySysNo, msg.MsgReceiver, (int)MsgType.SMS) ?? new List <MessageEntity>(); if (sendedList.Any()) { //SendCount < 0 不做限制 modify by vickytang if (parmater.SendCount > 0 && sendedList.Count() >= parmater.SendCount) //在过去24小时内发送短信的次数超过模版限制,不用判断IP,因短信模版自身含有限制 { return(2); //当前操作在过去24小时内发送短信的次数超过系统限制! } //从数据库获取接受者最后一条发送的验证码,1分钟之内不能重复发送 var t = sendedList.OrderByDescending(x => x.SysNo).First(); TimeSpan ts = DateTime.Now - t.InDate; if (ts.Minutes <= 1) { return(3); //当前接受者1分钟之类不能发送超过两条的验证码 } var clist = sendedList.Where(x => x.ClientIP == msg.ClientIP); //同IP //SendCount < 0 不做限制 modify by vickytang if (parmater.SendCount > 0 && clist.Count() > parmater.SendCount) { return(2);//当前操作在过去24小时内发送短信的次数超过系统限制! } } } ////检测24小时同IP同模版只能发送x条 //if (parmater.SendCount > 0 && sendedList.Any()) //{ // var clist = sendedList.Where(x => x.ClientIP == msg.ClientIP);//同IP // if (sendedList.Count() > parmater.SendCount || clist.Count() >= parmater.SendCount) // { // return 2;//当前操作在过去24小时内发送短信的次数超过系统限制! // } // else // { // //从数据库获取最后一条发送的验证码 // var t = sendedList.OrderByDescending(x => x.SysNo).First(); // TimeSpan ts = DateTime.Now - t.InDate; // if (ts.Minutes <= 1) // { // return 3;//当前接受者1分钟之类不能发送超过两条的验证码 // } // } //} var paras = from p in msg.TemplateParmaters orderby p.Name ascending select p.Value; SendMsgToDB(msg, (sysno) => { SendSMSImmediately(msg.MsgReceiver, msg.ExternalTemplateID, paras.ToList(), bl, sysno); msg.SysNo = sysno; if (msg.LimitCount > 1) { FirstSendSucess(msg); } }); } } } return(0); } catch (Exception ex) { Logger.WriteLog(ex.ToString(), "SMS_EXception"); throw ex; } }
public void SendSMSAsync() { SMSProcessor.SendSMSAsync(); }