Пример #1
0
 public int CreateOrUpdate(ArticleCreateOrUpdateRequestDTO request)
 {
     if (string.IsNullOrWhiteSpace(request.TopicName))
     {
         request.TopicName = "杂谈";
     }
     return(_service.CreateOrUpdate(request));
 }
Пример #2
0
        public IActionResult Publish(int id)
        {
            ArticleCreateOrUpdateRequestDTO model = _service.Edit(id) ?? new ArticleCreateOrUpdateRequestDTO()
            {
            };

            ViewBag.Topics = _topicService.GetTopN(20);
            return(View(model));
        }
Пример #3
0
        public int CreateOrUpdate(ArticleCreateOrUpdateRequestDTO request)
        {
            if (!_snsdbContext.Articles.Any(x => x.Id == request.Id))
            {
                Article article = new Article
                {
                    Title       = request.Title,
                    AccountId   = _identityUser.Id,
                    ContentType = ContentTypeEnum.Article.ToValue()
                };
                ArticleContent content = new ArticleContent
                {
                    Body = request.Body
                };
                Topic topic = _snsdbContext.Topics.AsNoTracking().FirstOrDefault(x => x.Name == request.TopicName);

                _snsdbContext.ExecuteTransaction(() =>
                {
                    // 文章
                    _snsdbContext.Articles.Add(article);
                    _snsdbContext.SaveChanges();
                    // 内容
                    content.ArticleId = article.Id;
                    _snsdbContext.ArticleContents.Add(content);
                    _snsdbContext.SaveChanges();
                    // 话题
                    if (topic == null)
                    {
                        topic = new Topic
                        {
                            Name = request.TopicName
                        };
                        _snsdbContext.Topics.Add(topic);
                        _snsdbContext.SaveChanges();
                    }
                    // 文章|话题 关系
                    ArticleTopic articleTopic = new ArticleTopic
                    {
                        ArticleId = article.Id,
                        TopicId   = topic.Id
                    };
                    _snsdbContext.ArticleTopics.Add(articleTopic);
                    _snsdbContext.SaveChanges();
                });
                return(article.Id);
            }
            else
            {
                // 文章
                Article article = _snsdbContext.Articles.Find(request.Id);
                article.Title          = request.Title;
                article.LastUpdateTime = DateTime.Now;
                // 内容
                ArticleContent articleContent = _snsdbContext.ArticleContents.FirstOrDefault(x => x.ArticleId == article.Id);
                if (articleContent != null)
                {
                    articleContent.Body = request.Body;
                }
                // 话题
                List <ArticleTopic> articleTopics = _snsdbContext.ArticleTopics.Where(x => x.ArticleId == article.Id).ToList();
                _snsdbContext.ArticleTopics.RemoveRange(articleTopics); // 先清空老的关系
                Topic topic = _snsdbContext.Topics.AsNoTracking().FirstOrDefault(x => x.Name == request.TopicName);
                _snsdbContext.ExecuteTransaction(() =>
                {
                    if (topic == null)
                    {
                        topic = new Topic
                        {
                            Name = request.TopicName
                        };
                        _snsdbContext.Topics.Add(topic);
                        _snsdbContext.SaveChanges();
                    }

                    // 文章|话题 关系
                    ArticleTopic articleTopic = new ArticleTopic
                    {
                        ArticleId = article.Id,
                        TopicId   = topic.Id
                    };
                    _snsdbContext.ArticleTopics.Add(articleTopic);
                    _snsdbContext.SaveChanges();
                });
                return(article.Id);
            }
        }