public override IResponseMessageBase OnEvent_ViewRequest(RequestMessageEvent_View requestMessage) { try { var opid = requestMessage.FromUserName; var entityclick = new MpEventClickViewLog(); entityclick.ID = Formula.FormulaHelper.CreateGuid(); entityclick.MpID = account.ID; entityclick.OpenID = opid; entityclick.EventKey = requestMessage.EventKey; entityclick.EventType = "查看"; entityclick.MsgID = requestMessage.MsgId.ToString(); entityclick.CreateDate = System.DateTime.Now; entities.Set <MpEventClickViewLog>().Add(entityclick); entities.SaveChanges(); } catch (Exception ex) { LogWriter.Info(string.Format("MPID{0}记录click事件出错:原因{1}", account.ID, ex.Message)); } return(null); }
public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage) { var rs = CacheHelper.Get(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey)); var rstype = CacheHelper.Get(string.Format("EventClickRequest_{0}_{1}_Type", account.AppID, requestMessage.EventKey)); #region 记录日志 try { var opid = requestMessage.FromUserName; var entityclick = new MpEventClickViewLog(); entityclick.ID = Formula.FormulaHelper.CreateGuid(); entityclick.MpID = account.ID; entityclick.OpenID = opid; entityclick.EventKey = requestMessage.EventKey; entityclick.EventType = "点击"; entityclick.MsgID = requestMessage.MsgId.ToString(); entityclick.CreateDate = System.DateTime.Now; entities.Set <MpEventClickViewLog>().Add(entityclick); entities.SaveChanges(); } catch (Exception ex) { LogWriter.Info(string.Format("MPID{0}记录click事件出错:原因{1}", account.ID, ex.Message)); } #endregion #region 推送消息 if (rs == null || rstype == null) { var entity = entities.Set <MpMenu>().Where(c => c.MpID == account.ID && c.IsDelete == 0 && c.MenuKey == requestMessage.EventKey).FirstOrDefault(); if (entity != null) { CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}_Type", account.AppID, requestMessage.EventKey), entity.MediaType, cachesecond); if (entity.MediaType == MpMessageType.image.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageImage>(); responseMessage.Image.MediaId = entity.ImageMediaID; CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); return(responseMessage); } else if (entity.MediaType == MpMessageType.text.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = entity.Content; CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); return(responseMessage); } else if (entity.MediaType == MpMessageType.voice.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageVoice>(); responseMessage.Voice.MediaId = entity.VoiceMediaID; CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); return(responseMessage); } else if (entity.MediaType == MpMessageType.video.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageVideo>(); var video = entities.Set <MpMediaVideo>().Where(c => c.MpID == account.ID && c.IsDelete == 0 && c.ID == entity.VideoID).FirstOrDefault(); if (video == null) { return(null); } responseMessage.Video.MediaId = video.MediaID; responseMessage.Video.Title = video.Title; responseMessage.Video.Description = video.Description; CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); return(responseMessage); } else if (entity.MediaType == MpMessageType.mpnews.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageNews>(); var article = entities.Set <MpSelfArticle>().Where(c => c.MpID == account.ID && c.IsDelete == 0 && c.ID == entity.ArticleID).FirstOrDefault(); if (article == null) { return(null); } responseMessage.Articles.Add(new Article() { Title = article.Title, Description = article.Description, Url = article.Url, PicUrl = string.Format("http://{0}/wechatservice/api/Image/Get/{1}", domain, article.PicFileID), }); CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); //LogWriter.Info(string.Format("EventClickRequest_{0}_{1}查询转换结束{2}", account.AppID, requestMessage.EventKey, new JavaScriptSerializer().Serialize(responseMessage))); return(responseMessage); } else if (entity.MediaType == MpMessageType.mpmultinews.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageNews>(); var article = entities.Set <MpSelfArticleGroup>().Where(c => c.MpID == account.ID && c.IsDelete == 0 && c.ID == entity.ArticleGroupID).FirstOrDefault(); if (article == null || article.MpSelfArticleGroupItem == null || article.MpSelfArticleGroupItem.Count(c => c.MpSelfArticle != null) < 2) { return(null); } foreach (var item in article.MpSelfArticleGroupItem.Where(c => c.MpSelfArticle != null)) { responseMessage.Articles.Add(new Article() { Title = item.MpSelfArticle.Title, Description = item.MpSelfArticle.Description, Url = item.MpSelfArticle.Url, PicUrl = string.Format("http://{0}/wechatservice/api/Image/Get/{1}", domain, item.MpSelfArticle.PicFileID), }); } CacheHelper.Set(string.Format("EventClickRequest_{0}_{1}", account.AppID, requestMessage.EventKey), responseMessage, cachesecond); return(responseMessage); } else { return(null); } } //其他回复 else { return(null); } } else { var rstp = rstype.ToString(); if (rstp == MpMessageType.image.ToString()) { return(rs as ResponseMessageImage); } else if (rstp == MpMessageType.mpmultinews.ToString()) { return(rs as ResponseMessageNews); } else if (rstp == MpMessageType.mpnews.ToString()) { //var jss = new JavaScriptSerializer(); //LogWriter.Info(string.Format("EventClickRequest_{0}_{1}开始转换{2}", account.AppID, requestMessage.EventKey, jss.Serialize(rs))); var result = rs as ResponseMessageNews; //if (result == null) //{ // LogWriter.Info(string.Format("EventClickRequest_{0}_{1}转ResponseMessageNews为null", account.AppID, requestMessage.EventKey)); //} //else //{ // LogWriter.Info(string.Format("EventClickRequest_{0}_{1}转换结束{2}", account.AppID, requestMessage.EventKey, jss.Serialize(result))); //} return(result); } else if (rstp == MpMessageType.text.ToString()) { return(rs as ResponseMessageText); } else if (rstp == MpMessageType.video.ToString()) { return(rs as ResponseMessageVideo); } else if (rstp == MpMessageType.voice.ToString()) { return(rs as ResponseMessageVoice); } return(rs as IResponseMessageBase); } #endregion }