/// <summary> /// 用户进入应用事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_EnterAgentRequest(RequestMessageEvent_Enter_Agent requestMessage) { LogManager.GetLogger(this.GetType()).Debug("用户进入应用事件 - AppID:" + requestMessage.AgentID); // 记录用户行为 _wr.CallUserBehavior(requestMessage.EventKey, requestMessage.FromUserName, requestMessage.AgentID.ToString(CultureInfo.InvariantCulture), "", "", 10); // 先判断是否第一次进入。 // 从_weChatAppUser中获取当前用户 string userId = requestMessage.FromUserName; bool isFirstJoin = false; var existingUser = _weChatAppUserService.Repository.Entities.FirstOrDefault(a => a.WeChatUserID == userId && a.WeChatAppID == requestMessage.AgentID); var objConfig = WeChatCommonService.GetWeChatConfig(requestMessage.AgentID); CategoryType appType = (CategoryType)requestMessage.AgentID; isFirstJoin = (existingUser == null || existingUser == default(WeChatAppUser)); // 如果是第一次进入,需要将用户插入到数据库中 if (isFirstJoin) { LogManager.GetLogger(this.GetType()).Debug("new WeChatAppUser - WeChatAppID=" + appType.ToDescription()); // 将用户信息插入到数据库中 _weChatAppUserService.Repository.Insert(new WeChatAppUser() { WeChatAppID = requestMessage.AgentID, WeChatUserID = userId }); } // 只有第一次推送。 if (isFirstJoin) { List <ArticleInfoView> items; // TODO: 查找所有新闻的最新6条数据,组织图文推送 switch (appType) { default: { LogManager.GetLogger(this.GetType()).Debug("App Type not defined."); items = _articleInfoService.GetList <ArticleInfoView>(a => a.ArticleStatus == "Published" && a.AppId == requestMessage.AgentID && a.ArticleCateSub.EndsWith("ENTRY_PUSH")) .OrderBy("PublishDate", System.ComponentModel.ListSortDirection.Descending) .ToList(); return(CreateResponse(items, objConfig.WXHost, "/News/ArticleInfo/wxdetail/")); } } } return(null); }