/// <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());
 }
Beispiel #2
0
        /// <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:
            }
        }
Beispiel #3
0
        /// <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);
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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:
            }
        }
Beispiel #8
0
        /// <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);
        }