Example #1
0
        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, "发布成功"));
        }
Example #2
0
        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, "成功"));
        }
Example #3
0
        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, "成功"));
        }
Example #4
0
        /// <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();
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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();
            }
        }
Example #7
0
        /// <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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
        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, "成功"));
        }
Example #10
0
        /// <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);
        }
Example #11
0
        /// <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);
        }
Example #12
0
        /// <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);
        }
Example #13
0
        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, "发布成功"));
        }
Example #14
0
        /// <summary>
        /// 根据Id关闭文章评论
        /// </summary>
        /// <param name="article">关闭评论的文章</param>
        void IArticle.CloseComment(TArticleLang article)
        {
            article.Commentable = 0;

            m_iArticle.Update(article);
        }
Example #15
0
        /// <summary>
        /// 根据Id开启文章评论
        /// </summary>
        /// <param name="article">开启评论的文章</param>
        void IArticle.OpenComment(TArticleLang article)
        {
            article.Commentable = 1;

            m_iArticle.Update(article);
        }