示例#1
0
        /// <summary>
        /// 详细消息处理
        /// </summary>
        /// <param name="postString"></param>
        public void Execute(string postString)
        {
            HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
            // 获取ToUserName,FromUserName,CreateTime,MsgType
            var rec = WXManage.FromXML <XMLObject>(postString);

            if (rec.MsgType == "event")
            {
                // 事件类型处理
                // 仅处理关注
                var subEV = WXManage.FromXML <SubscribeXMLObject>(postString);
                if (subEV.Event == "subscribe")
                {
                    var res = new TextMessageXMLObject()
                    {
                        FromUserName = rec.ToUserName,
                        ToUserName   = rec.FromUserName,
                        MsgType      = "text",
                        Content      = "欢迎关注\n回复数字balabala"
                    };
                    HttpContext.Current.Response.Write(res.ToXML());
                }
            }
            else if (rec.MsgType == "text")
            {
                // 文本类型处理
                var textMSG = WXManage.FromXML <TextMessageXMLObject>(postString);
                if (textMSG.Content == "1")
                {
                    TextMessageXMLObject res = new TextMessageXMLObject()
                    {
                        FromUserName = rec.ToUserName,
                        ToUserName   = rec.FromUserName,
                        MsgType      = "text",
                        Content      = "你好"
                    };
                    HttpContext.Current.Response.Write(res.ToXML());
                }
                // 获取OPENID
                else if (textMSG.Content == "-1")
                {
                    TextMessageXMLObject res = new TextMessageXMLObject()
                    {
                        FromUserName = rec.ToUserName,
                        ToUserName   = rec.FromUserName,
                        MsgType      = "text",
                        Content      = rec.FromUserName
                    };
                    HttpContext.Current.Response.Write(res.ToXML());
                }
                // 注册送气球
                else if (textMSG.Content.StartsWith("ilovezufe"))
                {
                    var name = textMSG.Content.Split(' ')[1];
                    ImageTextXMLObject res = new ImageTextXMLObject()
                    {
                        FromUserName = rec.ToUserName,
                        ToUserName   = rec.FromUserName,
                        MsgType      = "news",
                        ArticleCount = 1,
                        Articles     = new System.Collections.Generic.List <ImageTextXMLObject.item>()
                    };
                    TextMessageXMLObject tres = new TextMessageXMLObject()
                    {
                        FromUserName = rec.ToUserName,
                        ToUserName   = rec.FromUserName,
                        MsgType      = "text"
                    };
                    bool failed = false;
                    if (sqq.Sys.SignEnabled)
                    {
                        if (sqq.Database.AddSender(rec.FromUserName, name))
                        {
                            res.Articles.Add(new ImageTextXMLObject.item()
                            {
                                Title       = "登记成功,在这里查看和提交任务哦!",
                                Description = "查看和提交任务遇到问题,请联系管理员。",
                                PicUrl      = "..",
                                Url         = "http://debug.ocrosoft.com/sqq/ReportBack.aspx?oid=" + rec.FromUserName
                            });
                            sqq.Sys.Log(name + "进行了登记");
                        }
                        else
                        {
                            failed       = true;
                            tres.Content = "登记失败,请确认是否已经登记过。";
                        }
                    }
                    else
                    {
                        failed       = true;
                        tres.Content = "登记未开启,如错过登记请联系管理员。";
                    }
                    if (failed)
                    {
                        HttpContext.Current.Response.Write(tres.ToXML());
                    }
                    else
                    {
                        HttpContext.Current.Response.Write(res.ToXML());
                    }
                }
            }
        }