public ActionResult <Result> Publish([FromBody] TArticleLang article) { //获取用户信息 string user_id = Token.GetUserId(HttpContext.Request.Headers["Authorization"].ToString().Substring(7)); TUser user = userServer.Retrieve(new TUser() { UserId = user_id }); if (user.Super != 1) { throw new ResultException("无权操作"); } if (!typeServer.IsArticleType(article.TypeId)) { throw new ResultException("文章类型错误"); } articleServer.VerifyPublish(article); articleServer.Publish(article, user); socketServer.SendListenerAsync("Notification", new SocketResult("Notification", "on", new Result(200, "通知", "新文章:" + article.Title) ) ); return(new Result(200, "发布成功")); }
public ActionResult <Result> CloseComment([FromRoute] string articleLangId) { //获取用户信息 string user_id = Token.GetUserId(HttpContext.Request.Headers["Authorization"].ToString().Substring(7)); TUser user = userServer.Retrieve(new TUser() { UserId = user_id }); TArticleLang tlang = articleServer.Retrieve(new TArticleLang() { ArticleLangId = articleLangId }); if (tlang == null) { throw new ResultException("文章不存在"); } if (user.UserId != tlang.UserId) { throw new ResultException("无法操作他人的文章"); } articleServer.CloseComment(tlang); return(new Result(200, "成功")); }
public ActionResult <Result> Update([FromBody] TArticleLang article) { //获取用户信息 string user_id = Token.GetUserId(HttpContext.Request.Headers["Authorization"].ToString().Substring(7)); TUser user = userServer.Retrieve(new TUser() { UserId = user_id }); if (user.Super != 1) { throw new ResultException("无权操作"); } TArticleLang tlang = articleServer.Retrieve(new TArticleLang() { ArticleLangId = article.ArticleLangId }); if (user.UserId != tlang.UserId) { throw new ResultException("无法修改他人的文章"); } if (tlang == null) { throw new ResultException("文章不存在"); } articleServer.VerifyPublish(article); articleServer.Update(article); return(new Result(200, "成功")); }
/// <summary> /// 为已有文章添加新语言 /// </summary> /// <param name="article">文章信息</param> /// <param name="user">用户信息</param> void IArticle.PublishByLang(TArticleLang article, TUser user) { using (TransactionScope scope = new TransactionScope()) { article.UserId = user.UserId; m_iArticle.Create(article); scope.Complete(); } }
/// <summary> /// 验证发布的文章 /// </summary> /// <param name="article">文章信息</param> /// <returns></returns> bool IArticle.VerifyPublish(TArticleLang article) { if (article.Title == null || article.Title.Length == 0) { throw new ResultException("文章标题不能为空"); } if (article.Content == null || article.Content.Length == 0) { throw new ResultException("文章内容不能为空"); } return(true); }
/// <summary> /// 发布新文章 /// </summary> /// <param name="article">文章信息</param> /// <param name="user">用户信息</param> void IArticle.Publish(TArticleLang article, TUser user) { using (TransactionScope scope = new TransactionScope()) { string id = m_iArticle.CreateArticle(); article.ArticleId = id; article.UserId = user.UserId; m_iArticle.Create(article); scope.Complete(); } }
/// <summary> /// 根据ID删除数据 /// </summary> /// <param name="t">HuobiProject.Models</param> /// <returns> /// Success:T /// Failed:NULL /// </returns> bool ICURD <TArticleLang> .Delete(TArticleLang t) { using (TransactionScope scope = new TransactionScope()) { TArticleLang lang = m_db.TArticleLang.Find(t.ArticleLangId); m_db.TArticleLang.Remove(lang); m_db.SaveChanges(); //m_redis.HashDelete(RedisDB, lang.ArticleLangId); scope.Complete(); } return(true); }
/// <summary> /// 根据ID获取数据 /// </summary> /// <param name="t">HuobiProject.Models</param> /// <returns> /// Success:T /// Failed:NULL /// </returns> TArticleLang ICURD <TArticleLang> .Retrieve(TArticleLang t) { //if (m_redis.HashExists(RedisDB, t.ArticleLangId)) // return m_redis.HashGet<TArticleLang>(RedisDB, t.ArticleLangId); TArticleLang tart = m_db.TArticleLang .Include(i => i.User) .Include(i => i.Type) .Where(L => L.ArticleLangId == t.ArticleLangId).FirstOrDefault(); //m_redis.HashSet(RedisDB, tart.ArticleLangId, tart); return(tart); }
public ActionResult <Result> Delete([FromRoute] string articleLangId) { //获取用户信息 string user_id = Token.GetUserId(HttpContext.Request.Headers["Authorization"].ToString().Substring(7)); TUser user = userServer.Retrieve(new TUser() { UserId = user_id }); if (user.Super != 1) { throw new ResultException("无权操作"); } TArticleLang lang = articleServer.Retrieve(new TArticleLang { ArticleLangId = articleLangId }); if (lang == null) { throw new ResultException("文章不存在"); } if (lang.UserId != user.UserId) { throw new ResultException("无法删除他人的文章"); } TArticle p_article = articleServer.RetrieveMainArticle(new TArticle { ArticleId = lang.ArticleId }); //如果这篇文章下只有一篇语言文章则连父级也删除 if (articleServer.RetrieveArticlesByArticleId(p_article.ArticleId).Count() == 1) { using (TransactionScope scope = new TransactionScope()) { articleServer.Delete(lang); articleServer.DeleteMainArticle(p_article); scope.Complete(); } } else { articleServer.Delete(lang); } return(new Result(200, "成功")); }
/// <summary> /// 根据ID更新数据 /// 更新Redis数据 /// </summary> /// <param name="t">HuobiProject.Models</param> /// <returns> /// True:成功 /// False:失败 /// </returns> bool ICURD <TArticleLang> .Update(TArticleLang t) { using (TransactionScope scope = new TransactionScope()) { TArticleLang lang = m_db.TArticleLang.Find(t.ArticleLangId); lang.Title = t.Title; lang.Content = t.Content; lang.Commentable = t.Commentable; lang.Flag = t.Flag; lang.UpdateTime = DateTime.Now; m_db.SaveChanges(); //更新redis数据 //m_redis.HashSet(RedisDB, t.ArticleLangId, t); scope.Complete(); } return(true); }
/// <summary> /// 相关文章--随机 /// </summary> /// <param name="articleLangId">当前文章id</param> /// <param name="count">数据量</param> /// <returns></returns> dynamic IArticle.RelatedArticles(string articleLangId, int count) { TArticleLang t = m_iArticle.Retrieve(new TArticleLang { ArticleLangId = articleLangId }); var data_list = m_db.TArticleLang .Where(w => w.ArticleLangId != articleLangId && w.Type.LangId == t.Type.LangId) .OrderBy(o => articleLangId) .Take(count) .Select(s => new { s.Title, s.Type, s.ArticleId, s.ArticleLangId }).ToList(); return(data_list); }
/// <summary> /// 增加数据 /// 更新Redis数据 /// </summary> /// <param name="t">HuobiProject.Models</param> /// <returns> /// True:成功 /// False:失败 /// </returns> bool ICURD <TArticleLang> .Create(TArticleLang t) { using (TransactionScope scope = new TransactionScope()) { Random rand = new Random((int)Tools.Ticks()); string id = Tools.Ticks() + "" + rand.Next(1000, 10000); t.ArticleLangId = id; t.CreateTime = DateTime.Now; t.UpdateTime = t.CreateTime; m_db.TArticleLang.Add(t); m_db.SaveChanges(); //存Redis //m_redis.HashSet(RedisDB, t.ArticleLangId, t); scope.Complete(); } return(true); }
public ActionResult <Result> PublishAppend([FromRoute] string articleId, [FromBody] TArticleLang article) { //获取用户信息 string user_id = Token.GetUserId(HttpContext.Request.Headers["Authorization"].ToString().Substring(7)); TUser user = userServer.Retrieve(new TUser() { UserId = user_id }); if (user.Super != 1) { throw new ResultException("无权操作"); } if (!typeServer.IsArticleType(article.TypeId)) { throw new ResultException("文章类型错误"); } articleServer.VerifyPublish(article); TType type = typeServer.Retrieve(new TType() { TypeId = article.TypeId }); if (articleServer.RetrieveByLang(articleId, type.LangId.Value) != null) { throw new ResultException("已存在对应语言的文章"); } article.ArticleId = articleId; articleServer.PublishByLang(article, user); return(new Result(200, "发布成功")); }
/// <summary> /// 根据Id关闭文章评论 /// </summary> /// <param name="article">关闭评论的文章</param> void IArticle.CloseComment(TArticleLang article) { article.Commentable = 0; m_iArticle.Update(article); }
/// <summary> /// 根据Id开启文章评论 /// </summary> /// <param name="article">开启评论的文章</param> void IArticle.OpenComment(TArticleLang article) { article.Commentable = 1; m_iArticle.Update(article); }