From 41b9c2387e2d38ec816859d67d871ab12226adff Mon Sep 17 00:00:00 2001 From: x ronger Date: Sun, 24 Nov 2019 15:54:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=A6=E6=88=AA=E6=A0=87=E9=A2=98=E3=80=81?= =?UTF-8?q?=E6=AD=A3=E6=96=87=E4=B8=BA=E7=A9=BA=E6=97=B6=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vertical/service/ArticleService.java | 4 +- .../service/impl/ArticleServiceImpl.java | 112 ++++++++++-------- .../web/api/article/ArticleController.java | 13 +- 3 files changed, 71 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/rymcu/vertical/service/ArticleService.java b/src/main/java/com/rymcu/vertical/service/ArticleService.java index a9b5c7f..3940bfd 100644 --- a/src/main/java/com/rymcu/vertical/service/ArticleService.java +++ b/src/main/java/com/rymcu/vertical/service/ArticleService.java @@ -13,8 +13,6 @@ import java.util.Map; public interface ArticleService extends Service
{ List findArticles(String searchText, String tag); - Map postArticle(Integer idArticle, String articleTitle, String articleContent, String articleContentHtml, String articleTags, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException; - ArticleDTO findArticleDTOById(Integer id, int i); List findArticlesByTopicName(String name); @@ -22,4 +20,6 @@ public interface ArticleService extends Service
{ List findArticlesByTagName(String name); List findUserArticlesByIdUser(Integer idUser); + + Map postArticle(ArticleDTO article, HttpServletRequest request) throws UnsupportedEncodingException, MallApiException; } diff --git a/src/main/java/com/rymcu/vertical/service/impl/ArticleServiceImpl.java b/src/main/java/com/rymcu/vertical/service/impl/ArticleServiceImpl.java index 65a05b7..936d57f 100644 --- a/src/main/java/com/rymcu/vertical/service/impl/ArticleServiceImpl.java +++ b/src/main/java/com/rymcu/vertical/service/impl/ArticleServiceImpl.java @@ -3,7 +3,6 @@ package com.rymcu.vertical.service.impl; import com.rymcu.vertical.core.service.AbstractService; import com.rymcu.vertical.dto.ArticleDTO; import com.rymcu.vertical.dto.Author; -import com.rymcu.vertical.dto.UserDTO; import com.rymcu.vertical.entity.Article; import com.rymcu.vertical.entity.ArticleContent; import com.rymcu.vertical.entity.User; @@ -22,7 +21,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Service public class ArticleServiceImpl extends AbstractService
implements ArticleService { @@ -36,58 +38,17 @@ public class ArticleServiceImpl extends AbstractService
implements Arti private static final String DOMAIN = "https://rymcu.com"; + private static final int MAX_PREVIEW = 200; + @Override public List findArticles(String searchText, String tag) { List list = articleMapper.selectArticles(searchText, tag); list.forEach(article->{ - article = genArticle(article,0); + genArticle(article,0); }); return list; } - @Override - @Transactional - public Map postArticle(Integer idArticle, String articleTitle, String articleContent, String articleContentHtml, String articleTags, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException { - Map map = new HashMap(); - Article article; - User user = UserUtils.getWxCurrentUser(); - if(idArticle == null || idArticle == 0){ - article = new Article(); - article.setArticleTitle(articleTitle); - article.setArticleAuthorId(user.getIdUser()); - article.setArticleTags(articleTags); - article.setCreatedTime(new Date()); - article.setUpdatedTime(article.getCreatedTime()); - articleMapper.insertSelective(article); - article.setArticlePermalink(DOMAIN + "/article/"+article.getIdArticle()); - article.setArticleLink("/article/"+article.getIdArticle()); - articleMapper.insertArticleContent(article.getIdArticle(),articleContent,articleContentHtml); - } else { - article = articleMapper.selectByPrimaryKey(idArticle); - if(user.getIdUser() != article.getArticleAuthorId()){ - map.put("message","非法访问!"); - return map; - } - article.setArticleTitle(articleTitle); - article.setArticleTags(articleTags); - if(StringUtils.isNotBlank(articleContentHtml)){ - Integer length = articleContentHtml.length(); - if(length>200){ - length = 200; - } - String articlePreviewContent = articleContentHtml.substring(0,length); - article.setArticlePreviewContent(Html2TextUtil.getContent(articlePreviewContent)); - } - article.setUpdatedTime(new Date()); - articleMapper.updateArticleContent(article.getIdArticle(),articleContent,articleContentHtml); - } - tagService.saveTagArticle(article); - articleMapper.updateByPrimaryKeySelective(article); - - map.put("id", article.getIdArticle()); - return map; - } - @Override public ArticleDTO findArticleDTOById(Integer id, int type) { ArticleDTO articleDTO = articleMapper.selectArticleDTOById(id); @@ -111,11 +72,66 @@ public class ArticleServiceImpl extends AbstractService
implements Arti public List findUserArticlesByIdUser(Integer idUser) { List list = articleMapper.selectUserArticles(idUser); list.forEach(article->{ - article = genArticle(article,0); + genArticle(article,0); }); return list; } + @Override + @Transactional(rollbackFor = Exception.class) + public Map postArticle(ArticleDTO article, HttpServletRequest request) throws UnsupportedEncodingException, MallApiException { + Map map = new HashMap(1); + if(StringUtils.isBlank(article.getArticleTitle())){ + map.put("message","标题不能为空!"); + return map; + } + if(StringUtils.isBlank(article.getArticleContent())){ + map.put("message","正文不能为空!"); + return map; + } + String articleTitle = article.getArticleTitle(); + String articleTags = article.getArticleTags(); + String articleContent = article.getArticleContent(); + String articleContentHtml = article.getArticleContentHtml(); + User user = UserUtils.getWxCurrentUser(); + Article article1; + if(article.getIdArticle() == null || article.getIdArticle() == 0){ + article1 = new Article(); + article1.setArticleTitle(articleTitle); + article1.setArticleAuthorId(user.getIdUser()); + article1.setArticleTags(articleTags); + article1.setCreatedTime(new Date()); + article1.setUpdatedTime(article1.getCreatedTime()); + articleMapper.insertSelective(article1); + article1.setArticlePermalink(DOMAIN + "/article/"+article1.getIdArticle()); + article1.setArticleLink("/article/"+article1.getIdArticle()); + articleMapper.insertArticleContent(article1.getIdArticle(),articleContent,articleContentHtml); + } else { + article1 = articleMapper.selectByPrimaryKey(article.getIdArticle()); + if(!user.getIdUser().equals(article1.getArticleAuthorId())){ + map.put("message","非法访问!"); + return map; + } + article1.setArticleTitle(articleTitle); + article1.setArticleTags(articleTags); + if(StringUtils.isNotBlank(articleContentHtml)){ + Integer length = articleContentHtml.length(); + if(length > MAX_PREVIEW){ + length = 200; + } + String articlePreviewContent = articleContentHtml.substring(0,length); + article1.setArticlePreviewContent(Html2TextUtil.getContent(articlePreviewContent)); + } + article1.setUpdatedTime(new Date()); + articleMapper.updateArticleContent(article1.getIdArticle(),articleContent,articleContentHtml); + } + tagService.saveTagArticle(article1); + articleMapper.updateByPrimaryKeySelective(article1); + + map.put("id", article1.getIdArticle()); + return map; + } + private ArticleDTO genArticle(ArticleDTO article,Integer type) { Author author = articleMapper.selectAuthor(article.getArticleAuthorId()); article.setArticleAuthor(author); @@ -130,7 +146,7 @@ public class ArticleServiceImpl extends AbstractService
implements Arti if(StringUtils.isBlank(article.getArticlePreviewContent())){ ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle()); Integer length = articleContent.getArticleContentHtml().length(); - if(length>200){ + if(length > MAX_PREVIEW){ length = 200; } String articlePreviewContent = articleContent.getArticleContentHtml().substring(0,length); diff --git a/src/main/java/com/rymcu/vertical/web/api/article/ArticleController.java b/src/main/java/com/rymcu/vertical/web/api/article/ArticleController.java index 4cdd51d..bf16946 100644 --- a/src/main/java/com/rymcu/vertical/web/api/article/ArticleController.java +++ b/src/main/java/com/rymcu/vertical/web/api/article/ArticleController.java @@ -2,6 +2,7 @@ package com.rymcu.vertical.web.api.article; import com.rymcu.vertical.core.result.GlobalResult; import com.rymcu.vertical.core.result.GlobalResultGenerator; +import com.rymcu.vertical.dto.ArticleDTO; import com.rymcu.vertical.service.ArticleService; import com.rymcu.vertical.web.api.exception.MallApiException; import org.springframework.web.bind.annotation.*; @@ -19,18 +20,14 @@ public class ArticleController { private ArticleService articleService; @PostMapping("/post") - public GlobalResult postArticle(@RequestParam(name = "idArticle",defaultValue = "0") Integer idArticle,@RequestParam(name = "articleTitle",defaultValue = "") String articleTitle, - @RequestParam(name = "articleContent",defaultValue = "") String articleContent,@RequestParam(name = "articleContentHtml",defaultValue = "") String articleContentHtml, - @RequestParam(name = "articleTags",defaultValue = "") String articleTags, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException { - Map map = articleService.postArticle(idArticle,articleTitle,articleContent,articleContentHtml,articleTags,request); + public GlobalResult postArticle(@RequestBody ArticleDTO article, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException { + Map map = articleService.postArticle(article,request); return GlobalResultGenerator.genSuccessResult(map); } @PutMapping("/post") - public GlobalResult updateArticle(@RequestParam(name = "idArticle",defaultValue = "0") Integer idArticle,@RequestParam(name = "articleTitle",defaultValue = "") String articleTitle, - @RequestParam(name = "articleContent",defaultValue = "") String articleContent,@RequestParam(name = "articleContentHtml",defaultValue = "") String articleContentHtml, - @RequestParam(name = "articleTags",defaultValue = "") String articleTags, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException { - Map map = articleService.postArticle(idArticle,articleTitle,articleContent,articleContentHtml,articleTags,request); + public GlobalResult updateArticle(@RequestBody ArticleDTO article, HttpServletRequest request) throws MallApiException, UnsupportedEncodingException { + Map map = articleService.postArticle(article,request); return GlobalResultGenerator.genSuccessResult(map); }