/// <summary> /// 修改微信咨询信息 /// </summary> /// <param name="model">微信咨询实体类</param> /// <returns>受影响的行数</returns> /// <remarks> /// 2013-11-07 郑荣华 创建 /// </remarks> public override int Update(MkWeixinQuestion model) { return(Context.Update("MkWeixinQuestion", model) .AutoMap(x => x.SysNo) .Where(x => x.SysNo) .Execute()); }
/// <summary> /// 回写防伪验证结果 /// </summary> /// <param name="request">回写参数</param> /// <returns></returns> /// <remarks>2013-10-15 陶辉 创建</remarks> public override void WriteBackMessage(RequestXml request) { var result = WeChatBo.Instance.CheckProduct(request.Content.Split(new string[] { ":", ":" }, StringSplitOptions.RemoveEmptyEntries)[1]); var message = result.Status ? NoHtml(result.Data.Msg) : result.Message; #region 数据初始化 var resxml = string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> <FuncFlag>1</FuncFlag> </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), message); #endregion try { Hyt.Util.Log.LogManager.Instance.WriteLog("防伪验证:" + resxml); System.Web.HttpContext.Current.Response.Write(resxml); System.Web.HttpContext.Current.Response.End(); var answer = new MkWeixinQuestion() { Messages = message, MessagesTime = DateTime.Now, ReplyerSysNo = 0, Status = (int)MarketingStatus.微信咨询消息状态.已读, Type = (int)MarketingStatus.微信咨询类型.回复, WeixinId = request.FromUserName, CustomerSysNo = 0 }; //answer写入表 IMkWeixinQuestionDao.Instance.Create(answer); } catch (Exception) { //TODO: } }
/// <summary> /// 回写异常结果 /// </summary> /// <param name="request">回写参数</param> /// <returns></returns> /// <remarks>2013-10-15 陶辉 创建</remarks> public override void WriteBackMessage(RequestXml request) { var message = "抱歉,您输入的格式有误!"; #region 初始化数据 var resxml = string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> <FuncFlag>1</FuncFlag> </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), message); #endregion try { System.Web.HttpContext.Current.Response.Write(resxml); System.Web.HttpContext.Current.Response.End(); var answer = new MkWeixinQuestion() { Messages = message, MessagesTime = DateTime.Now, ReplyerSysNo = 0, Status = (int)MarketingStatus.微信咨询消息状态.已读, Type = (int)MarketingStatus.微信咨询类型.回复, WeixinId = request.FromUserName, CustomerSysNo = 0 }; //answer写入表 IMkWeixinQuestionDao.Instance.Create(answer); } catch (Exception) { //TODO: } }
/// <summary> /// 添加微信咨询信息 /// </summary> /// <param name="model">微信咨询实体类</param> /// <returns>返回新增的系统编号</returns> /// <remarks> /// 2013-11-07 郑荣华 创建 /// </remarks> public override int Create(MkWeixinQuestion model) { return(Context.Insert("MkWeixinQuestion", model) .AutoMap(x => x.SysNo) .ExecuteReturnLastId <int>("SysNo")); }
/// <summary> /// 修改微信咨询信息 /// </summary> /// <param name="model">微信咨询实体类</param> /// <returns>受影响的行数</returns> /// <remarks> /// 2013-11-07 郑荣华 创建 /// </remarks> public abstract int Update(MkWeixinQuestion model);
/// <summary> /// 接收信息处理方法 /// </summary> /// <param name="postStr">接收信息</param> /// <returns>void</returns> /// <remarks>2013-10-31 陶辉 创建</remarks> public void Handle(string postStr) { //封装请求类 var doc = new XmlDocument(); doc.LoadXml(postStr); var rootElement = doc.DocumentElement; var xml = new RequestXml() { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = rootElement.SelectSingleNode("MsgType").InnerText }; if (xml.MsgType == "text") { xml.Content = rootElement.SelectSingleNode("Content").InnerText; } else if (xml.MsgType == "event") { var selectSingleNode = rootElement.SelectSingleNode("Event"); if (selectSingleNode != null) { xml.SubscribeEvent = selectSingleNode.InnerText; } } #region 收集微信消息 //switch (xml.MsgType) //{ // case "text": // xml.Content = rootElement.SelectSingleNode("Content").InnerText; // break; // case "location": // xml.Location_X = rootElement.SelectSingleNode("Location_X").InnerText; // xml.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText; // xml.Scale = rootElement.SelectSingleNode("Scale").InnerText; // xml.Label = rootElement.SelectSingleNode("Label").InnerText; // break; // case "image": // xml.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; // break; // case "event": // xml.SubscribeEvent = rootElement.SelectSingleNode("Event").InnerText; // break; //} #endregion //回复类型 Reply reply = null; if (xml.MsgType == "event") { Hyt.Util.Log.LogManager.Instance.WriteLog("事件"); reply = new SubscribeReply(); } else { if (xml.Content.IndexOf("防伪验证") >= 0) { reply = new CheckAuthenticityReply(); } else { //自动回复 reply = new AutoReply(); } } try { if (!string.IsNullOrEmpty(xml.Content)) { var question = new MkWeixinQuestion() { Messages = xml.Content, MessagesTime = DateTime.Now, ReplyerSysNo = 0, Status = (int)MarketingStatus.微信咨询消息状态.未读, Type = (int)MarketingStatus.微信咨询类型.咨询, WeixinId = xml.FromUserName, CustomerSysNo = 0 }; //question写入表 IMkWeixinQuestionDao.Instance.Create(question); } } catch (Exception) { //TODO: } reply.WriteBackMessage(xml); }
/// <summary> /// 回写自动回复结果 /// </summary> /// <param name="request">回写参数</param> /// <returns></returns> /// <remarks>2013-10-15 陶辉 创建</remarks> public override void WriteBackMessage(RequestXml request) { var list = WeChatBo.Instance.GetAutoReplys(request.Content); #region 构造数据 //var item1 = new MkWeixinKeywordsReply() //{ // ReplyType = (int)MarketingStatus.微信关键词回复类型.文本, // Content = "请稍等,待会给您回复。" //}; //var item2 = new MkWeixinKeywordsReply() //{ // ReplyType = (int)MarketingStatus.微信关键词回复类型.图文, // Title = "商城新品上市了,赶快下手吧", // Content = @"<div style='text-align:center'><img alt="" data-pinit='registered' src='http://image.huiyuanti.com/ckimages/20130422162706.jpg' /><p>新品上市了</p></div>", // Image = "http://image.huiyuanti.com/ckimages/20130422162714.jpg", // Hyperlink = "http://www.huiyuanti.com/Home/Announcement/19" //}; ////list.Add(item1); //list.Add(item2); #endregion #region 初始化数据 var xmls = list.Select((q, i) => new { str = q.ReplyType == (int)MarketingStatus.微信关键词回复类型.文本 ? #region 文本回复内容 string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> <FuncFlag>1</FuncFlag> </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), q.Content) #endregion : #region 图文回复内容 string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[{3}]]></Title> <Description><![CDATA[{4}]]></Description> <PicUrl><![CDATA[{5}]]></PicUrl> <Url><![CDATA[{6}]]></Url> </item> </Articles> </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), q.Title, q.Content, q.Image, q.Hyperlink) #endregion , content = q.Content }).ToList(); #endregion try { foreach (var xml in xmls) { System.Web.HttpContext.Current.Response.Write(xml.str); var answer = new MkWeixinQuestion() { Messages = xml.content, MessagesTime = DateTime.Now, ReplyerSysNo = 1, Status = (int)MarketingStatus.微信咨询消息状态.已读, Type = (int)MarketingStatus.微信咨询类型.回复, WeixinId = request.FromUserName, CustomerSysNo = 0 }; //answer写入表 IMkWeixinQuestionDao.Instance.Create(answer); break; } System.Web.HttpContext.Current.Response.End(); } catch (Exception) { //TODO: } }
/// <summary> /// 回复客户微信消息 /// </summary> /// <param name="openID">接收方账号</param> /// <param name="content">回复消息内容</param> /// <param name="curUserSysNo">客服系统编号</param> /// <returns>返回结果实体</returns> /// <remarks> /// 2013-10-31 陶辉 创建 /// 2013-11-07 郑荣华 实现数据插入 /// </remarks> public Model.Result WriteBackMessage(string openID, string content, int curUserSysNo) { //消息实体 var message = new WriteMessage() { touser = openID, msgtype = "text", text = new MessageContent() { content = content } }; var jsonMsg = Util.Serialization.JsonUtil.ToJson(message);//json数据包 //api请求 var apiUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + AccessToken; var req = GetWebRequest(apiUrl, "POST"); byte[] postData = Encoding.UTF8.GetBytes(jsonMsg); System.IO.Stream reqStream = req.GetRequestStream(); reqStream.Write(postData, 0, postData.Length); reqStream.Close(); var webResponse = (HttpWebResponse)req.GetResponse(); var stream = new StreamReader(webResponse.GetResponseStream()); var jsonStr = stream.ReadToEnd(); var jsonObject = JObject.Parse(jsonStr); Model.Result result = null; try { if (jsonObject["errcode"].ToString() == "0") { var model = new MkWeixinQuestion { Messages = content, MessagesTime = DateTime.Now, ReplyerSysNo = curUserSysNo, Status = (int)MarketingStatus.微信咨询消息状态.已读, Type = (int)MarketingStatus.微信咨询类型.回复, WeixinId = openID, CustomerSysNo = 0 }; IMkWeixinQuestionDao.Instance.Create(model); result = new Model.Result() { Status = true, StatusCode = 1, Message = "回复消息成功" }; } else { result = new Model.Result() { Status = false, StatusCode = 0, Message = "发送消息失败" }; } } catch { result = new Model.Result() { Status = false, StatusCode = 0, Message = "发送消息失败" }; } return(result); }