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
        }