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); }
public virtual AbstractResponse OnEvent_ScanRequest(ScanEventRequest scanEventRequest) { return(this.DefaultResponse(scanEventRequest)); }
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); }
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); }
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); }
//扫描二维码事件 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); }
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); }
/// <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; }