Exemple #1
0
        public override AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
        {
            string eventKey = scanEventRequest.EventKey;

            if (eventKey == "1")
            {
                if (WeiXinHelper.BindAdminOpenId.Count > 10)
                {
                    WeiXinHelper.BindAdminOpenId.Clear();
                }
                if (WeiXinHelper.BindAdminOpenId.ContainsKey(scanEventRequest.Ticket))
                {
                    WeiXinHelper.BindAdminOpenId[scanEventRequest.Ticket] = scanEventRequest.FromUserName;
                }
                else
                {
                    WeiXinHelper.BindAdminOpenId.Add(scanEventRequest.Ticket, scanEventRequest.FromUserName);
                }
                return(new TextResponse {
                    CreateTime = DateTime.Now, Content = "您正在扫描尝试绑定管理员身份,身份已识别", ToUserName = scanEventRequest.FromUserName, FromUserName = scanEventRequest.ToUserName
                });
            }
            ScanInfos scanInfosByTicket = ScanHelp.GetScanInfosByTicket(scanEventRequest.Ticket);

            Globals.Debuglog(eventKey + ":" + scanEventRequest.Ticket, "_Debuglog.txt");
            bool flag = MemberProcessor.IsExitOpenId(scanEventRequest.FromUserName);

            if ((!flag && (scanInfosByTicket != null)) && (scanInfosByTicket.BindUserId > 0))
            {
                this.CreatMember(scanEventRequest.FromUserName, scanInfosByTicket.BindUserId);
            }
            if (scanInfosByTicket != null)
            {
                ScanHelp.updateScanInfosLastActiveTime(DateTime.Now, scanInfosByTicket.Sceneid);
            }
            if (flag)
            {
                return(new TextResponse {
                    CreateTime = DateTime.Now, Content = "您刚扫描了分销商公众号二维码!", ToUserName = scanEventRequest.FromUserName, FromUserName = scanEventRequest.ToUserName
                });
            }
            Hidistro.Entities.VShop.ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply();
            if (subscribeReply == null)
            {
                return(null);
            }
            subscribeReply.Keys = "扫描";
            AbstractResponse response = this.GetResponse(subscribeReply, scanEventRequest.FromUserName);

            response.ToUserName   = scanEventRequest.FromUserName;
            response.FromUserName = scanEventRequest.ToUserName;
            return(response);
        }
Exemple #2
0
 public virtual AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
 {
     return(this.DefaultResponse(scanEventRequest));
 }
Exemple #3
0
        public override AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
        {
            string eventKey = scanEventRequest.EventKey;

            if (eventKey == "1")
            {
                if (WeiXinHelper.BindAdminOpenId.Count > 10)
                {
                    WeiXinHelper.BindAdminOpenId.Clear();
                }
                if (WeiXinHelper.BindAdminOpenId.ContainsKey(scanEventRequest.Ticket))
                {
                    WeiXinHelper.BindAdminOpenId[scanEventRequest.Ticket] = scanEventRequest.FromUserName;
                }
                else
                {
                    WeiXinHelper.BindAdminOpenId.Add(scanEventRequest.Ticket, scanEventRequest.FromUserName);
                }
                return(new TextResponse
                {
                    CreateTime = System.DateTime.Now,
                    Content = "您正在扫描尝试绑定管理员身份,身份已识别",
                    ToUserName = scanEventRequest.FromUserName,
                    FromUserName = scanEventRequest.ToUserName
                });
            }
            ScanInfos scanInfosByTicket = ScanHelp.GetScanInfosByTicket(scanEventRequest.Ticket);

            Globals.Debuglog(eventKey + ":" + scanEventRequest.Ticket, "_Debuglog.txt");
            bool flag = MemberProcessor.IsExitOpenId(scanEventRequest.FromUserName);

            if (!flag && scanInfosByTicket != null && scanInfosByTicket.BindUserId > 0)
            {
                this.CreatMember(scanEventRequest.FromUserName, scanInfosByTicket.BindUserId, "");
            }
            if (scanInfosByTicket != null)
            {
                ScanHelp.updateScanInfosLastActiveTime(System.DateTime.Now, scanInfosByTicket.Sceneid);
            }
            string text = "";

            System.Data.DataSet dataSet = new System.Data.DataSet();
            string text2 = System.Web.HttpContext.Current.Server.MapPath("/config/WifiConfig.xml");

            if (System.IO.File.Exists(text2))
            {
                dataSet.ReadXml(text2);
                if (dataSet != null && dataSet.Tables.Count > 0)
                {
                    foreach (System.Data.DataRow dataRow in dataSet.Tables[0].Rows)
                    {
                        if (dataRow["id"].ToString() == eventKey)
                        {
                            text = string.Concat(new string[]
                            {
                                dataRow["WifiDescribe"].ToString(),
                                "\r\nWIFI帐号:",
                                dataRow["WifiName"].ToString(),
                                "\r\n WIFI密码:",
                                dataRow["WifiPwd"].ToString()
                            });
                        }
                    }
                }
            }
            if (text != "")
            {
                return(new TextResponse
                {
                    CreateTime = System.DateTime.Now,
                    Content = text,
                    ToUserName = scanEventRequest.FromUserName,
                    FromUserName = scanEventRequest.ToUserName
                });
            }
            if (flag)
            {
                return(new TextResponse
                {
                    CreateTime = System.DateTime.Now,
                    Content = "您刚扫描了分销商公众号二维码!",
                    ToUserName = scanEventRequest.FromUserName,
                    FromUserName = scanEventRequest.ToUserName
                });
            }
            Hidistro.Entities.VShop.ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply();
            if (subscribeReply == null)
            {
                return(null);
            }
            subscribeReply.Keys = "扫描";
            AbstractResponse response = this.GetResponse(subscribeReply, scanEventRequest.FromUserName);

            response.ToUserName   = scanEventRequest.FromUserName;
            response.FromUserName = scanEventRequest.ToUserName;
            return(response);
        }
Exemple #4
0
        public override AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
        {
            ReplyInfo replyInfo    = ReplyHelper.GetSubscribeReply();
            string    fromUserName = scanEventRequest.FromUserName;

            try
            {
                MemberProcessor.UpdateWXUserIsSubscribeStatus(fromUserName, true);
            }
            catch (Exception ex)
            {
                IDictionary <string, string> dictionary = new Dictionary <string, string>();
                dictionary.Add("openId", fromUserName);
                Globals.WriteExceptionLog(ex, dictionary, "UpdateWXUserIsSubscribeStatus");
            }
            if (replyInfo == null)
            {
                replyInfo = new ReplyInfo();
            }
            replyInfo.Keys = "登录";
            if (scanEventRequest != null && !string.IsNullOrEmpty(scanEventRequest.EventKey) && scanEventRequest.EventKey.Split('_').Length >= 2)
            {
                string text = scanEventRequest.EventKey.Split('_')[1];
                if (text == "referralregister")
                {
                    replyInfo.Keys = "分销注册";
                }
                else if (text.Contains("referraluserid"))
                {
                    if (text.Split(':').Length == 2)
                    {
                        int referralUserId = text.Split(':')[1].ToInt(0);
                        MemberWXReferralInfo wXReferral = VShopHelper.GetWXReferral(scanEventRequest.FromUserName);
                        if (wXReferral != null && wXReferral.Id > 0)
                        {
                            VShopHelper.UpdateWXReferral(scanEventRequest.FromUserName, referralUserId);
                        }
                        else
                        {
                            VShopHelper.AddWXReferral(scanEventRequest.FromUserName, referralUserId);
                        }
                    }
                }
                else if (text.Contains("shoppingguiderid") && text.Split(':').Length == 2)
                {
                    int shoppingGuiderId = text.Split(':')[1].ToInt(0);
                    MemberWXShoppingGuiderInfo memberWXShoppingGuider = MemberHelper.GetMemberWXShoppingGuider(scanEventRequest.FromUserName);
                    if (memberWXShoppingGuider != null && memberWXShoppingGuider.Id > 0)
                    {
                        MemberHelper.UpdateWXShoppingGuider(scanEventRequest.FromUserName, shoppingGuiderId);
                    }
                    else
                    {
                        MemberHelper.AddWXShoppingGuider(scanEventRequest.FromUserName, shoppingGuiderId);
                    }
                }
            }
            AbstractResponse response = this.GetResponse(replyInfo, scanEventRequest.FromUserName, scanEventRequest);

            if (response == null)
            {
                return(this.GotoManyCustomerService(scanEventRequest));
            }
            response.ToUserName   = scanEventRequest.FromUserName;
            response.FromUserName = scanEventRequest.ToUserName;
            return(response);
        }
Exemple #5
0
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            RequestMsgType  msgType = MsgTypeHelper.GetMsgType(doc);
            AbstractRequest entity  = null;

            switch (msgType)
            {
            case RequestMsgType.Text:
                entity = new TextRequest();
                break;

            case RequestMsgType.Image:
                entity = new ImageRequest();
                break;

            case RequestMsgType.Voice:
                entity = new VoiceRequest();
                break;

            case RequestMsgType.Video:
                entity = new VideoRequest();
                break;

            case RequestMsgType.Location:
                entity = new LocationRequest();
                break;

            case RequestMsgType.Link:
                entity = new LinkRequest();
                break;

            case RequestMsgType.Event:
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                    entity = new SubscribeEventRequest();
                    goto Label_00D7;

                case RequestEventType.UnSubscribe:
                    entity = new UnSubscribeEventRequest();
                    goto Label_00D7;

                case RequestEventType.Scan:
                    entity = new ScanEventRequest();
                    goto Label_00D7;

                case RequestEventType.Location:
                    entity = new LocationEventRequest();
                    goto Label_00D7;

                case RequestEventType.Click:
                    entity = new ClickEventRequest();
                    goto Label_00D7;

                case RequestEventType.MASSSENDJOBFINISH:
                    entity = new MassendJobFinishEventRequest();
                    goto Label_00D7;
                }
                throw new ArgumentOutOfRangeException();

            default:
                throw new ArgumentOutOfRangeException();
            }
Label_00D7:
            EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc);
            Regex regex = new Regex(@"<MsgID>(?<url>\d+)</MsgID>");

            if (entity.MsgId == 0L)
            {
                Match match = Regex.Match(doc.Root.ToString(), @"<MsgID>(?<msgid>\d+)</MsgID>", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    entity.MsgId      = long.Parse(match.Groups["msgid"].Value);
                    entity.CreateTime = DateTime.Now;
                }
            }
            return(entity);
        }
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            RequestMsgType  msgType = MsgTypeHelper.GetMsgType(doc);
            AbstractRequest entity  = null;

            switch (msgType)
            {
            case RequestMsgType.Text:
                entity = new TextRequest();
                break;

            case RequestMsgType.Image:
                entity = new ImageRequest();
                break;

            case RequestMsgType.Voice:
                entity = new VoiceRequest();
                break;

            case RequestMsgType.Video:
                entity = new VideoRequest();
                break;

            case RequestMsgType.Location:
                entity = new LocationRequest();
                break;

            case RequestMsgType.Link:
                entity = new LinkRequest();
                break;

            case RequestMsgType.Event:
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                    entity = new SubscribeEventRequest();
                    goto Label_00C5;

                case RequestEventType.UnSubscribe:
                    entity = new UnSubscribeEventRequest();
                    goto Label_00C5;

                case RequestEventType.Scan:
                    entity = new ScanEventRequest();
                    goto Label_00C5;

                case RequestEventType.Location:
                    entity = new LocationEventRequest();
                    goto Label_00C5;

                case RequestEventType.Click:
                    entity = new ClickEventRequest();
                    goto Label_00C5;
                }
                throw new ArgumentOutOfRangeException();

            default:
                throw new ArgumentOutOfRangeException();
            }
Label_00C5:
            EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc);
            return(entity);
        }
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            RequestMsgType  msgType     = MsgTypeHelper.GetMsgType(doc);
            AbstractRequest textRequest = null;

            switch (msgType)
            {
            case RequestMsgType.Text:
            {
                textRequest = new TextRequest();
                break;
            }

            case RequestMsgType.Image:
            {
                textRequest = new ImageRequest();
                break;
            }

            case RequestMsgType.Voice:
            {
                textRequest = new VoiceRequest();
                break;
            }

            case RequestMsgType.Video:
            {
                textRequest = new VideoRequest();
                break;
            }

            case RequestMsgType.Location:
            {
                textRequest = new LocationRequest();
                break;
            }

            case RequestMsgType.Link:
            {
                textRequest = new LinkRequest();
                break;
            }

            case RequestMsgType.Event:
            {
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                {
                    textRequest = new SubscribeEventRequest();
                    break;
                }

                case RequestEventType.UnSubscribe:
                {
                    textRequest = new UnSubscribeEventRequest();
                    break;
                }

                case RequestEventType.Scan:
                {
                    textRequest = new ScanEventRequest();
                    break;
                }

                case RequestEventType.Location:
                {
                    textRequest = new LocationEventRequest();
                    break;
                }

                case RequestEventType.Click:
                {
                    textRequest = new ClickEventRequest();
                    break;
                }

                default:
                {
                    throw new ArgumentOutOfRangeException();
                }
                }
                break;
            }

            default:
            {
                throw new ArgumentOutOfRangeException();
            }
            }
            EntityHelper.FillEntityWithXml <AbstractRequest>(textRequest, doc);
            return(textRequest);

            throw new ArgumentOutOfRangeException();
        }
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            AbstractRequest abstractRequest;

            switch (MsgTypeHelper.GetMsgType(doc))
            {
            case RequestMsgType.Text:
                abstractRequest = new TextRequest();
                break;

            case RequestMsgType.Image:
                abstractRequest = new ImageRequest();
                break;

            case RequestMsgType.Voice:
                abstractRequest = new VoiceRequest();
                break;

            case RequestMsgType.Video:
                abstractRequest = new VideoRequest();
                break;

            case RequestMsgType.Location:
                abstractRequest = new LocationRequest();
                break;

            case RequestMsgType.Link:
                abstractRequest = new LinkRequest();
                break;

            case RequestMsgType.Event:
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                    abstractRequest = new SubscribeEventRequest();
                    break;

                case RequestEventType.UnSubscribe:
                    abstractRequest = new UnSubscribeEventRequest();
                    break;

                case RequestEventType.Scan:
                    abstractRequest = new ScanEventRequest();
                    break;

                case RequestEventType.Location:
                    abstractRequest = new LocationEventRequest();
                    break;

                case RequestEventType.Click:
                    abstractRequest = new ClickEventRequest();
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            EntityHelper.FillEntityWithXml <AbstractRequest>(abstractRequest, doc);
            return(abstractRequest);
        }
Exemple #9
0
        //扫描二维码事件
        public override AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
        {
            Utils.LogWriter.SaveLog("产生扫码事件:" + scanEventRequest.EventKey);
            if (!string.IsNullOrEmpty(scanEventRequest.EventKey))
            {
                /*
                 * 打开分享图片
                 * 获取用户信息
                 *
                 * */

                string open_id        = scanEventRequest.FromUserName;
                int    ReferralUserId = int.Parse(scanEventRequest.EventKey);

                //判断是否会员
                if (MemberProcessor.IsExitOpenId(open_id))
                {
                    //Utils.LogWriter.SaveLog("已存在会员:" + open_id);
                    Hidistro.Entities.Members.MemberInfo m = MemberProcessor.GetMembers(open_id);
                    if (m.ReferralUserId == 0 && m.OpenId != open_id)
                    {
                        m.ReferralUserId = ReferralUserId;
                        MemberProcessor.UpdateMember(m);
                        Utils.LogWriter.SaveLog("扫码填补上级ID:" + ReferralUserId);
                        return(null);
                    }

                    //Utils.LogWriter.SaveLog("返回提示:" + open_id);
                    TextResponse response = new TextResponse
                    {
                        CreateTime   = DateTime.Now,
                        Content      = "您已经有上级了哦",
                        ToUserName   = scanEventRequest.FromUserName,
                        FromUserName = scanEventRequest.ToUserName
                    };
                    return(response);
                }

                SiteSettings masterSettings = SettingsManager.GetMasterSettings(true);

                JObject wx_user_info = TokenApi.GetUserInfo(masterSettings.WeixinAppId, masterSettings.WeixinAppSecret, open_id);
                Utils.LogWriter.SaveLog("wx_user_info:" + wx_user_info["nickname"].ToString());

                string generateId = Globals.GetGenerateId();
                Hidistro.Entities.Members.MemberInfo member = new Hidistro.Entities.Members.MemberInfo
                {
                    GradeId        = MemberProcessor.GetDefaultMemberGrade(),
                    UserName       = Globals.UrlDecode(wx_user_info["nickname"].ToString()),
                    OpenId         = open_id,
                    CreateDate     = DateTime.Now,
                    SessionId      = generateId,
                    SessionEndTime = DateTime.Now.AddYears(10),
                    ReferralUserId = ReferralUserId
                };

                //Utils.LogWriter.SaveLog("创建客户资料");
                MemberProcessor.CreateMember(member);
            }

            return(null);
        }
        /// <summary>
        /// 从文本信息中, 获取事件数据.
        /// </summary>
        /// <param name="weixin"></param>
        /// <returns></returns>
        public AbstractRequest ReadEvent(string weixin)
        {
            XmlDocument doc = new XmlDocument();

            //读取xml字符串
            doc.LoadXml(weixin);
            XmlElement root = doc.DocumentElement;

            // 获取收到的消息类型。文本(text),图片(image),语音等。
            XmlNode MsgType     = root.SelectSingleNode("MsgType");
            string  messageType = MsgType.InnerText;

            if (messageType != "event")
            {
                if (logger.IsDebugEnabled)
                {
                    logger.Debug("不是事件,忽略处理。");
                }
                return(null);
            }


            AbstractRequest resultEvent = null;



            XmlNode Event     = root.SelectSingleNode("Event");
            string  eventType = Event.InnerText;

            try
            {
                switch (eventType)
                {
                case EventType.SubscribeEventType:
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug("检测到用户订阅事件,尝试解析..");
                    }
                    resultEvent = new SubscribeEventRequest(doc);
                    break;


                case EventType.UnsubscribeEventType:
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug("检测到用户取消订阅事件,尝试解析..");
                    }
                    resultEvent = new UnsubscribeEventRequest(doc);
                    break;

                case EventType.ScanEventType:
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug("检测到用户扫码事件,尝试解析..");
                    }
                    resultEvent = new ScanEventRequest(doc);
                    break;


                case EventType.LocationEventType:
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug("检测到用户上报地理位置事件,尝试解析..");
                    }
                    resultEvent = new LocationEventRequest(doc);
                    break;


                case EventType.ClickEventType:
                    if (logger.IsDebugEnabled)
                    {
                        logger.Debug("检测到用户自定义菜单事件,尝试解析..");
                    }
                    resultEvent = new ClickEventRequest(doc);
                    break;


                default:
                    logger.WarnFormat("检测到了无法识别的信息:{0}", eventType);
                    break;
                }


                if (logger.IsDebugEnabled)
                {
                    logger.DebugFormat("消息解析结果:{0}", resultEvent);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
            }

            return(resultEvent);
        }
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc);

            AbstractRequest entity = null;

            // System.IO.File.AppendAllText(@"E:\home\LocalUser\580442\www\humowang\api\type.txt", "msgType:" + msgType + "\r\n");
            switch (msgType)
            {
            case RequestMsgType.Text:
            {
                entity = new TextRequest();
                break;
            }

            case RequestMsgType.Image:
            {
                entity = new ImageRequest();
                break;
            }

            case RequestMsgType.Voice:
            {
                entity = new VoiceRequest();
                break;
            }

            case RequestMsgType.Video:
            {
                entity = new VideoRequest();
                break;
            }

            case RequestMsgType.Location:
            {
                entity = new LocationRequest();
                break;
            }

            case RequestMsgType.Link:
            {
                entity = new LinkRequest();
                break;
            }

            case RequestMsgType.Event:
            {
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                {
                    entity = new SubscribeEventRequest();
                    //goto Label_00C5;
                    break;
                }

                case RequestEventType.UnSubscribe:
                {
                    entity = new UnSubscribeEventRequest();
                    //goto Label_00C5;
                    break;
                }

                case RequestEventType.Scan:
                {
                    entity = new ScanEventRequest();
                    // goto Label_00C5;
                    break;
                }

                case RequestEventType.Location:
                {
                    entity = new LocationEventRequest();
                    // goto Label_00C5;
                    break;
                }

                case RequestEventType.Click:
                {
                    entity = new ClickEventRequest();
                    // goto Label_00C5;
                    break;
                }

                case RequestEventType.VIEW:
                {
                    entity = new ViewEventRequest();
                    break;
                }

                default:
                {
                    throw new ArgumentOutOfRangeException();
                    // break;
                }
                }
                break;
            }

            default:
            {
                throw new ArgumentOutOfRangeException();
            }
            }

            //Label_00C5:
            EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc);

            return(entity);
        }
Exemple #12
0
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            AbstractRequest abstractRequest;

            switch (MsgTypeHelper.GetMsgType(doc))
            {
            case RequestMsgType.Text:
                abstractRequest = new TextRequest();
                break;

            case RequestMsgType.Image:
                abstractRequest = new ImageRequest();
                break;

            case RequestMsgType.Voice:
                abstractRequest = new VoiceRequest();
                break;

            case RequestMsgType.Video:
                abstractRequest = new VideoRequest();
                break;

            case RequestMsgType.Location:
                abstractRequest = new LocationRequest();
                break;

            case RequestMsgType.Link:
                abstractRequest = new LinkRequest();
                break;

            case RequestMsgType.Event:
                switch (EventTypeHelper.GetEventType(doc))
                {
                case RequestEventType.Subscribe:
                    abstractRequest = new SubscribeEventRequest();
                    break;

                case RequestEventType.UnSubscribe:
                    abstractRequest = new UnSubscribeEventRequest();
                    break;

                case RequestEventType.Scan:
                    abstractRequest = new ScanEventRequest();
                    break;

                case RequestEventType.Location:
                    abstractRequest = new LocationEventRequest();
                    break;

                case RequestEventType.Click:
                    abstractRequest = new ClickEventRequest();
                    break;

                case RequestEventType.MASSSENDJOBFINISH:
                    abstractRequest = new MassendJobFinishEventRequest();
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            EntityHelper.FillEntityWithXml <AbstractRequest>(abstractRequest, doc);
            Regex regex = new Regex("<MsgID>(?<url>\\d+)</MsgID>");

            if (abstractRequest.MsgId == 0L)
            {
                Match match = Regex.Match(doc.Root.ToString(), "<MsgID>(?<msgid>\\d+)</MsgID>", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    abstractRequest.MsgId      = long.Parse(match.Groups["msgid"].Value);
                    abstractRequest.CreateTime = DateTime.Now;
                }
            }
            return(abstractRequest);
        }
Exemple #13
0
 /// <summary>
 /// 增加扫码事件处理,add by jhb,20151213
 /// </summary>
 /// <param name="scanEventRequest"></param>
 /// <returns></returns>
 public override AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest)
 {
     ScanVisitDistributor(scanEventRequest, scanEventRequest.EventKey);
     return(null);
 }
        public static AbstractRequest GetRequestEntity(XDocument doc)
        {
            RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc);
            AbstractRequest entity = null;
            switch (msgType)
            {
                case RequestMsgType.Text:
                    entity = new TextRequest();
                    break;

                case RequestMsgType.Image:
                    entity = new ImageRequest();
                    break;

                case RequestMsgType.Voice:
                    entity = new VoiceRequest();
                    break;

                case RequestMsgType.Video:
                    entity = new VideoRequest();
                    break;

                case RequestMsgType.Location:
                    entity = new LocationRequest();
                    break;

                case RequestMsgType.Link:
                    entity = new LinkRequest();
                    break;

                case RequestMsgType.Event:
                    //switch (EventTypeHelper.GetEventType(doc))
                    switch (doc.Root.Element("Event").Value.ToUpper())
                    {
                        //case RequestEventType.Subscribe:
                        case "SUBSCRIBE"://订阅(关注)
                            entity = new SubscribeEventRequest();
                            goto Label_00D1;

                        //case RequestEventType.UnSubscribe:
                        case "UNSUBSCRIBE"://取消订阅(关注)
                            entity = new UnSubscribeEventRequest();
                            goto Label_00D1;

                        //case RequestEventType.Scan:
                        case "SCAN"://二维码扫描
                            entity = new ScanEventRequest();
                            goto Label_00D1;

                        //case RequestEventType.Location:
                        case "LOCATION"://地理位置
                            entity = new LocationEventRequest();
                            goto Label_00D1;

                        //case RequestEventType.Click:
                        case "CLICK"://菜单点击
                            entity = new ClickEventRequest();
                            goto Label_00D1;

                        //case RequestEventType.MASSSENDJOBFINISH:
                        case "MASSSENDJOBFINISH":
                            entity = new MassendJobFinishEventRequest();
                            goto Label_00D1;

                        case "VIEW":
                            entity = new ViewEventRequest();
                            goto Label_00D1;

                        //default://其他意外类型(也可以选择抛出异常)
                        //    entity = new AbstractRequest();
                        //    goto Label_00D1;

                    }
                    throw new ArgumentOutOfRangeException();

                default:
                    throw new ArgumentOutOfRangeException();
            }
        Label_00D1:
            //EntityHelper.FillEntityWithXml<AbstractRequest>(entity, doc);
            //修改无法解析完整数据 2017.7.4
            EntityHelper.FillEntityWithXml(entity, doc);
            new Regex(@"<MsgID>(?<url>\d+)</MsgID>");
            if (entity.MsgId == 0L)
            {
                Match match = Regex.Match(doc.Root.ToString(), @"<MsgID>(?<msgid>\d+)</MsgID>", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    entity.MsgId = long.Parse(match.Groups["msgid"].Value);
                    entity.CreateTime = DateTime.Now;
                }
            }
            return entity;
        }