public ActionResult WxDetail(int id, bool isPreview = false) { //由于存在重复的App(58与10为同一个App),此处将58替换为10 //暂时保证 PRD环境可运行 //此代码可在稳定运行数月后删除 int appId = AppId == 58 ? 10 : AppId; _Logger.Debug("app id :{0}", appId); var article = _objService.Repository.Entities.FirstOrDefault(a => a.Id == id && a.AppId == appId && !a.IsDeleted.Value); if (article == null || (!isPreview && article.ArticleStatus != ConstData.STATUS_PUBLISH)) { ///return Redirect("../invalid"); /// return(View(new ArticleInfoView() { ArticleTitle = "错误!", ArticleContent = "文章不存在!可能已经删除或者未发布!" })); } //var list = _articleThumbsUpService.Repository.Entities.Where(x => x.ArticleID == id && x.Type == ThumbupType.Article.ToString()).Select(x => new { articleId = x.ArticleID, userId = x.UserID, x.IsDeleted }).ToList(); //article.ThumbsUpCount = list.Count(x => x.IsDeleted != true); //第一次跳转到该Action 后需要再次跳转到OAuth //第二次跳转到该Action 后再进行验证 //当redirectUrl 为string.empty 时, 认为验证通过 string redirecturl = base.ExecuteAuthorityFilterForNews(article, true); if (!string.IsNullOrEmpty(redirecturl)) { return(Redirect(redirecturl)); } //if (article.ArticleType == 1 && isPreview) //{ // article = null; //} if (isPreview) { var dateOfUpdate = (DateTime)article.PreviewStartDate; TimeSpan timeBetweenNowPreview = DateTime.Now.Subtract(dateOfUpdate); int sumHours = timeBetweenNowPreview.Hours; if (sumHours > 12) { return(RedirectToAction("overtime", new { wechatid = appId })); } } if (article.PublishDate == null) { article.PublishDate = article.CreatedDate; } //有异步 ExecuteBehavior(article.AppId.Value, 1, "", id.ToString()); //勉强异步一下吧 Task.Run(() => { if (!string.IsNullOrEmpty(ViewBag.WeChatUserID)) { _Logger.Debug("begin to check has readed :{0}, {1}", article.Id, ViewBag.WeChatUserID); if (!_articleInfoReadHistoryService.HasReaded(article.Id, ViewBag.WeChatUserID)) { _articleInfoReadHistoryService.InsertView(new ArticleInfoReadHistoryView() { UserId = ViewBag.WeChatUserID, ArticleInfoId = article.Id }); _Logger.Debug("begin to add read count"); new ArticleInfoService().Repository.SqlExcute("update articleinfo set ReadCount=ReadCount+1 where id=" + article.Id.ToString()); } } else { new ArticleInfoService().Repository.SqlExcute("update articleinfo set ReadCount=ReadCount+1 where id=" + article.Id.ToString()); } }); if (!string.IsNullOrEmpty(article.ArticleURL)) { if (!article.IsPassingWeChatUserID.GetValueOrDefault()) { return(Redirect(article.ArticleURL)); } var builder = new UriBuilder(article.ArticleURL); var query = HttpUtility.ParseQueryString(builder.Query); query.Add("WeChatUserID", _objService.EncryptorWeChatUserID(ViewBag.WeChatUserID)); _Logger.Debug(string.Format("url {0}", builder.ToString())); builder.Query = query.ToString(); return(Redirect(builder.ToString())); } var articleView = new ArticleInfoView().ConvertAPIModel(article); var view = (ArticleInfoView)articleView; string WeChatUserID = ViewBag.WeChatUserID; view.IsThumbuped = _articleThumbsUpService.Repository.Entities.Any(x => x.UserID == WeChatUserID && x.ArticleID == id && x.IsDeleted != true); var appName = WeChatCommonService.lstSysWeChatConfig.Find(a => a.Id == appId); if (appName != null) { view.APPName = appName.AppName; } else { view.APPName = string.Empty; } //此处需要添加判断 //判断文章允许支持点赞 if (view.ShowComment.HasValue && view.ShowComment.Value) { var user = _addressBookService.GetMemberByUserId(WeChatUserID); if (null != user) { ViewBag.UserInfoId = user.Id; view.CanReadComment = true; if (user.Status != null && user.Status.Value == 1 && //关注 "A".Equals(user.EmployeeStatus, StringComparison.OrdinalIgnoreCase)) //在职 { view.CanAddComment = true; } } } return(View(view)); }
public ActionResult WxDetail(int id, bool isPreview = false) { var article = _objService.Repository.Entities.FirstOrDefault(a => a.Id == id && a.AppId == AppId && !a.IsDeleted.Value); if (article == null || (!isPreview && article.ArticleStatus != ConstData.STATUS_PUBLISH)) { return(View(new ArticleInfoView() { ArticleTitle = "错误!", ArticleContent = "文章不存在!可能已经删除或者未发布!" })); } _Logger.Debug("article id:{0}, appid:{1}", id, AppId); //第一次跳转到该Action 后需要再次跳转到OAuth //第二次跳转到该Action 后再进行验证 //当redirectUrl 为string.empty 时, 认为验证通过 //服务号不需要权限控制 //string redirectUrl = base.ExecuteAuthorityFilterForNews(article, false); //if (!string.IsNullOrEmpty(redirectUrl)) //{ // return Redirect(redirectUrl); //} //if (!base.ValidateNewsVisibleScope(article, true)) //{ // return Redirect("/notauthed.html"); //} //if (article.ArticleType == 1 && isPreview) //{ // article = null; //} //var list = _articleThumbsUpService.Repository.Entities.Where(x => x.ArticleID == id && x.Type == ThumbupType.Article.ToString()).Select(x => new { articleId = x.ArticleID, userId = x.UserID, x.IsDeleted }).ToList(); //article.ThumbsUpCount = list.Count(x => x.IsDeleted != true); if (isPreview) { var dateOfUpdate = (DateTime)article.PreviewStartDate; TimeSpan timeBetweenNowPreview = DateTime.Now.Subtract(dateOfUpdate); int sumHours = timeBetweenNowPreview.Hours; if (sumHours > 12) { return(RedirectToAction("overtime", new { wechatid = AppId })); } } if (article.PublishDate == null) { article.PublishDate = article.CreatedDate; } //ExecuteBehavior(article.AppId.Value, 1, "", id.ToString()); //article.ReadCount++; //_objService.Repository.Update(article, new List<string>() { "ReadCount" }); ExecuteBehavior(article.AppId.Value, 1, "", id.ToString()); //勉强异步一下吧 Task.Run(() => { if (!string.IsNullOrEmpty(ViewBag.WeChatUserID)) { _Logger.Debug("begin to check has readed :{0}, {1}", article.Id, ViewBag.WeChatUserID); if (!_articleInfoReadHistoryService.HasReaded(article.Id, ViewBag.WeChatUserID)) { _articleInfoReadHistoryService.InsertView(new ArticleInfoReadHistoryView() { UserId = ViewBag.WeChatUserID, ArticleInfoId = article.Id }); _Logger.Debug("begin to add read count"); new ArticleInfoService().Repository.SqlExcute("update articleinfo set ReadCount=ReadCount+1 where id=" + article.Id.ToString()); } } else { new ArticleInfoService().Repository.SqlExcute("update articleinfo set ReadCount=ReadCount+1 where id=" + article.Id.ToString()); } }); if (!string.IsNullOrEmpty(article.ArticleURL)) { if (!article.IsPassingWeChatUserID.GetValueOrDefault()) { return(Redirect(article.ArticleURL)); } var builder = new UriBuilder(article.ArticleURL); var query = HttpUtility.ParseQueryString(builder.Query); query.Add("WeChatUserID", _objService.EncryptorWeChatUserID(ViewBag.WeChatUserID)); _Logger.Debug(string.Format("url {0}", builder.ToString())); builder.Query = query.ToString(); return(Redirect(builder.ToString())); } var articleView = new ArticleInfoView().ConvertAPIModel(article); var view = (ArticleInfoView)articleView; string WeChatUserID = ViewBag.WeChatUserID; view.IsThumbuped = _articleThumbsUpService.Repository.Entities.Any(x => x.UserID == WeChatUserID && x.ArticleID == id && x.IsDeleted != true); _Logger.Debug("WeChatUserID:{0}", WeChatUserID); //服务号不需要评论+点赞功能 //var user = _wechatMPUserService.GetUserByOpenId(WeChatUserID); //if (null != user) //{ // ViewBag.UserInfoId = user.Id; // view.CanReadComment = true; // if (user.IsCanceled == false) // { // view.CanAddComment = true; // } //} int wechatId = System.Convert.ToInt32(Request["wechatid"]); _Logger.Debug("GetJSSDKConfig:{0}", wechatId); var newUrl = Request.Url.AbsoluteUri.ToString().Replace(":5001", ""); _Logger.Debug("Remove 5001 :{0}", newUrl); var wxConfig = WeChatCommonService.GetJSSDKConfig(wechatId, newUrl); _Logger.Debug("GetJSSDKConfig Signature:{0} URL:{1}", wxConfig.Signature, newUrl); ViewBag.SdkAppId = wxConfig.AppId; ViewBag.Timestamp = wxConfig.Timestamp; ViewBag.NonceStr = wxConfig.NonceStr; ViewBag.Signature = wxConfig.Signature; return(View(view)); }