public int CreateOrUpdate(ArticleCreateOrUpdateRequestDTO request) { if (string.IsNullOrWhiteSpace(request.TopicName)) { request.TopicName = "杂谈"; } return(_service.CreateOrUpdate(request)); }
public IActionResult Publish(int id) { ArticleCreateOrUpdateRequestDTO model = _service.Edit(id) ?? new ArticleCreateOrUpdateRequestDTO() { }; ViewBag.Topics = _topicService.GetTopN(20); return(View(model)); }
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); } }