From 67a1b1faf9aba54520cc7ebd4c7141374dbf5707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 25 May 2020 21:43:53 +0800 Subject: [PATCH] =?UTF-8?q?Service=E5=B1=82=E4=BF=AE=E6=94=B9=20=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/ArticleController.java | 4 +- .../blog/entity/model/ArticleModel.java | 30 +- .../cn/celess/blog/entity/model/PageData.java | 38 +++ .../cn/celess/blog/mapper/ArticleMapper.java | 6 + .../celess/blog/mapper/ArticleTagMapper.java | 4 + .../serviceimpl/ArticleServiceImpl.java | 256 ++++++------------ .../java/cn/celess/blog/util/ModalTrans.java | 37 +++ .../resources/mapper/ArticleTagMapper.xml | 28 +- src/main/resources/mapper/articleMapper.xml | 26 ++ .../controller/ArticleControllerTest.java | 97 +++---- .../celess/blog/mapper/ArticleMapperTest.java | 23 +- .../blog/mapper/ArticleTagMapperTest.java | 21 +- 12 files changed, 317 insertions(+), 253 deletions(-) create mode 100644 src/main/java/cn/celess/blog/entity/model/PageData.java create mode 100644 src/main/java/cn/celess/blog/util/ModalTrans.java diff --git a/src/main/java/cn/celess/blog/controller/ArticleController.java b/src/main/java/cn/celess/blog/controller/ArticleController.java index a8177d2..1faf686 100644 --- a/src/main/java/cn/celess/blog/controller/ArticleController.java +++ b/src/main/java/cn/celess/blog/controller/ArticleController.java @@ -80,10 +80,10 @@ public class ArticleController { public Response retrieveOneById(@PathVariable("articleID") long articleId, @RequestParam(value = "update", defaultValue = "false") boolean is4update, HttpServletRequest request) { - ArticleModel article = articleService.retrieveOneByID(articleId, is4update); + ArticleModel article = articleService.retrieveOneById(articleId, is4update); if (article.getOpen()) { return ResponseUtil.success(article); - } else if (article.getAuthorId().equals(redisUserUtil.get().getId())) { + } else if (article.getAuthor().getId().equals(redisUserUtil.get().getId())) { return ResponseUtil.success(article); } return ResponseUtil.response(ResponseEnum.PERMISSION_ERROR, null); diff --git a/src/main/java/cn/celess/blog/entity/model/ArticleModel.java b/src/main/java/cn/celess/blog/entity/model/ArticleModel.java index 22cd274..ed86ab9 100644 --- a/src/main/java/cn/celess/blog/entity/model/ArticleModel.java +++ b/src/main/java/cn/celess/blog/entity/model/ArticleModel.java @@ -1,9 +1,11 @@ package cn.celess.blog.entity.model; +import cn.celess.blog.entity.Tag; import lombok.Getter; import lombok.Setter; import java.io.Serializable; +import java.util.List; /** * @author : xiaohai @@ -57,40 +59,28 @@ public class ArticleModel { /** * 标签 */ - private String[] tags; + private List tags; /** * 作者 */ - private Long authorId; + private UserModel author; - /** - * 作者名字 - */ - private String authorName; + private ArticleModel preArticle; - /** - * 上一篇文章 - */ - private Long preArticleId; - - /** - * 下一篇文章 - */ - private Long nextArticleId; - - private String preArticleTitle; - - private String nextArticleTitle; + private ArticleModel nextArticle; /** * 阅读数 */ private Long readingNumber; + private Integer likeCount; + + private Integer dislikeCount; + /** * 文章的状态 true:公开 false:不公开 */ private Boolean open; - } diff --git a/src/main/java/cn/celess/blog/entity/model/PageData.java b/src/main/java/cn/celess/blog/entity/model/PageData.java new file mode 100644 index 0000000..5e75273 --- /dev/null +++ b/src/main/java/cn/celess/blog/entity/model/PageData.java @@ -0,0 +1,38 @@ +package cn.celess.blog.entity.model; + +import com.github.pagehelper.PageInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author: 小海 + * @Date: 2020-05-25 17:13 + * @Desc: + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PageData { + + private List list; + + private long total; + + private int pageSize; + + private int pageNum; + + public PageData(PageInfo pageInfo) { + this.pageNum = pageInfo.getPageNum(); + this.pageSize = pageInfo.getPageSize(); + this.total = pageInfo.getTotal(); + } + + public PageData(PageInfo pageInfo, List data) { + this(pageInfo); + this.list = data; + } +} diff --git a/src/main/java/cn/celess/blog/mapper/ArticleMapper.java b/src/main/java/cn/celess/blog/mapper/ArticleMapper.java index e276fe7..c7b8d49 100644 --- a/src/main/java/cn/celess/blog/mapper/ArticleMapper.java +++ b/src/main/java/cn/celess/blog/mapper/ArticleMapper.java @@ -37,8 +37,14 @@ public interface ArticleMapper { List
findAllByCategoryId(long id); + List
findAllByCategoryIdAndOpen(long id); + List
findAll(); + Article getPreArticle(Long id); + + Article getNextArticle(Long id); + int updateReadingNumber(long id); long count(); diff --git a/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java b/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java index 7991a55..bcf4fc7 100644 --- a/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java +++ b/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java @@ -28,4 +28,8 @@ public interface ArticleTagMapper { List findAllByArticleId(Long articleId); int deleteMultiById(List articleTags); + + List findArticleByTag(Long tagId); + + List findArticleByTagAndOpen(Long tagId); } diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java index 1f2dbab..7a7eeda 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java @@ -1,24 +1,21 @@ package cn.celess.blog.service.serviceimpl; -import cn.celess.blog.enmu.LevelEnum; import cn.celess.blog.enmu.ResponseEnum; import cn.celess.blog.enmu.RoleEnum; import cn.celess.blog.entity.*; import cn.celess.blog.entity.model.ArticleModel; +import cn.celess.blog.entity.model.PageData; import cn.celess.blog.entity.request.ArticleReq; import cn.celess.blog.exception.MyException; import cn.celess.blog.mapper.*; import cn.celess.blog.service.ArticleService; import cn.celess.blog.service.UserService; -import cn.celess.blog.util.DateFormatUtil; -import cn.celess.blog.util.RedisUserUtil; -import cn.celess.blog.util.RegexUtil; -import cn.celess.blog.util.StringFromHtmlUtil; +import cn.celess.blog.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.youbenzi.mdtool.tool.MDTool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; @@ -35,8 +31,8 @@ import java.util.List; * @date : 2019/03/28 15:21 */ @Service +@Slf4j public class ArticleServiceImpl implements ArticleService { - public static final Logger logger = LoggerFactory.getLogger(ArticleServiceImpl.class); @Autowired ArticleMapper articleMapper; @@ -86,22 +82,16 @@ public class ArticleServiceImpl implements ArticleService { throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST); } // 查看是否存在已有的分类 - Category category = (Category) categoryMapper.findCategoryByName(reqBody.getCategory()); + Category category = categoryMapper.findCategoryByName(reqBody.getCategory()); if (category == null) { throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST); } - // 构建 需要写入数据库的对象数据 Article article = new Article(); - article.setTitle(reqBody.getTitle()); - article.setOpen(reqBody.getOpen()); - article.setMdContent(reqBody.getMdContent()); - article.setUrl(reqBody.getUrl()); - article.setType(reqBody.getType()); + BeanUtils.copyProperties(reqBody, article); article.setUser(redisUserUtil.get()); - article.setPublishDate(new Date()); //markdown->html->summary String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent())); @@ -113,14 +103,13 @@ public class ArticleServiceImpl implements ArticleService { //文章存数据库 articleMapper.insert(article); - //将标签写入数据库 for (String tagName : reqBody.getTags()) { if (tagName.replaceAll(" ", "").length() == 0) { //单个标签只含空格 continue; } - Tag tag = (Tag) tagMapper.findTagByName(tagName); + Tag tag = tagMapper.findTagByName(tagName); if (tag == null) { tag = new Tag(); tag.setName(tagName); @@ -129,9 +118,12 @@ public class ArticleServiceImpl implements ArticleService { ArticleTag articleTag = new ArticleTag(article, tag); articleTagMapper.insert(articleTag); } - return fullTransform(article); - } + Article articleFromDb = articleMapper.findArticleById(article.getId()); + ArticleModel articleModel = ModalTrans.articleToModal(articleFromDb); + articleModel.setPreArticle(ModalTrans.articleToModal(articleMapper.getPreArticle(article.getId()))); + return articleModel; + } @Override @Transactional(rollbackFor = Exception.class) @@ -189,7 +181,7 @@ public class ArticleServiceImpl implements ArticleService { article.setUrl(reqBody.getUrl()); } if (reqBody.getCategory() != null && !reqBody.getCategory().replaceAll(" ", "").isEmpty()) { - Category category = (Category) categoryMapper.findCategoryByName(reqBody.getCategory()); + Category category = categoryMapper.findCategoryByName(reqBody.getCategory()); if (category == null) { category = new Category(); category.setName(reqBody.getCategory()); @@ -198,12 +190,8 @@ public class ArticleServiceImpl implements ArticleService { article.setCategory(category); } - if (reqBody.getTags() != null && reqBody.getTags().length != 0) { - - } - //写入数据库的数据 - article.setOpen(reqBody.getOpen() ? article.getOpen() : reqBody.getOpen()); + article.setOpen(reqBody.getOpen() == null ? article.getOpen() : reqBody.getOpen()); String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent())); article.setSummary(str.length() > 240 ? str.substring(0, 240) + "......" : str); articleMapper.update(article); @@ -213,12 +201,13 @@ public class ArticleServiceImpl implements ArticleService { List updateList = new ArrayList<>(); List deleteList = new ArrayList<>(); + // 获取要更新 的标签 for (String tag : reqBody.getTags()) { boolean contain = allByArticleId.stream().anyMatch(articleTag -> articleTag.getTag().getName().equals(tag)); if (!contain) { ArticleTag articleTag = new ArticleTag(); articleTag.setArticle(article); - Tag tagByName = (Tag) tagMapper.findTagByName(tag); + Tag tagByName = tagMapper.findTagByName(tag); if (tagByName == null) { tagByName = new Tag(tag); tagMapper.insert(tagByName); @@ -227,7 +216,7 @@ public class ArticleServiceImpl implements ArticleService { updateList.add(articleTag); } } - + // 获取要删除的标签 allByArticleId.forEach(articleTag -> { boolean contain = false; for (String tag : reqBody.getTags()) { @@ -251,12 +240,14 @@ public class ArticleServiceImpl implements ArticleService { //更新完成移除 request.getSession().removeAttribute("article4update"); - return fullTransform(article); + ArticleModel articleModel = ModalTrans.articleToModal(articleMapper.findArticleById(article.getId())); + setPreAndNextArticle(articleModel); + return articleModel; } @Override - public ArticleModel retrieveOneByID(long articleID, boolean is4update) { - Article article = articleMapper.findArticleById(articleID); + public ArticleModel retrieveOneById(long articleId, boolean is4update) { + Article article = articleMapper.findArticleById(articleId); if (article == null) { throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST); } @@ -266,178 +257,101 @@ public class ArticleServiceImpl implements ArticleService { throw new MyException(ResponseEnum.ARTICLE_NOT_PUBLIC); } } - article.setReadingNumber(article.getReadingNumber() + 1); + ArticleModel articleModel = ModalTrans.articleToModal(article); + if (is4update) { //因更新而获取文章 不需要增加阅读量 request.getSession().setAttribute("article4update", article); - return fullTransform(article); + return articleModel; } - articleMapper.setReadingNumber(article.getReadingNumber() + 1, articleID); - return fullTransform(article); + setPreAndNextArticle(articleModel); + articleMapper.updateReadingNumber(articleId); + return articleModel; } /** * @param count 数目 * @param page 页面 默认减1 - * @return + * @return PageInfo */ @Override - public PageInfo adminArticles(int count, int page) { + public PageData adminArticles(int count, int page) { PageHelper.startPage(page, count); List
articleList = articleMapper.findAll(); - PageInfo pageInfo = new PageInfo(articleList); - pageInfo.setList(list2list(articleList, LevelEnum.BETWEEN_M_AND_H)); - return pageInfo; + PageData pageData = new PageData(new PageInfo
(articleList)); + List articleModelList = new ArrayList<>(); + articleList.forEach(article -> { + ArticleModel articleModel = ModalTrans.articleToModal(article); + articleModel.setMdContent(null); + articleModelList.add(articleModel); + }); + pageData.setList(articleModelList); + return pageData; } @Override - public PageInfo retrievePageForOpen(int count, int page) { + public PageData retrievePageForOpen(int count, int page) { PageHelper.startPage(page, count); List
articleList = articleMapper.findAllByOpen(true); - PageInfo pageInfo = new PageInfo(articleList); - pageInfo.setList(list2list(articleList, LevelEnum.MIDDLE)); - return pageInfo; + PageData pageData = new PageData<>(new PageInfo
(articleList)); + + List articleModelList = new ArrayList<>(); + + articleList.forEach(article -> { + ArticleModel model = ModalTrans.articleToModal(article); + setPreAndNextArticle(model); + model.setOpen(null); + model.setMdContent(null); + articleModelList.add(model); + }); + + pageData.setList(articleModelList); + return pageData; } @Override - public PageInfo findByCategory(String name, int page, int count) { - Long idByName = categoryMapper.getIdByName(name); - if (idByName == null) { + public PageData findByCategory(String name, int page, int count) { + Category category = categoryMapper.findCategoryByName(name); + if (category == null) { throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST); } PageHelper.startPage(page, count); - PageInfo pageInfo = new PageInfo(articleMapper.getSimpleInfoByCategory(idByName)); - return pageInfo; + List
open = articleMapper.findAllByCategoryIdAndOpen(category.getId()); + + List modelList = new ArrayList<>(); + + open.forEach(article -> { + ArticleModel model = ModalTrans.articleToModal(article); + model.setMdContent(null); + model.setTags(null); + model.setOpen(null); + setPreAndNextArticle(model); + }); + return new PageData(new PageInfo
(open), modelList); } @Override - public PageInfo findByTag(String name, int page, int count) { - Tag tag = (Tag) tagMapper.findTagByName(name); + public PageData findByTag(String name, int page, int count) { + Tag tag = tagMapper.findTagByName(name); if (tag == null) { throw new MyException(ResponseEnum.TAG_NOT_EXIST); } - // TODO : PageHelper.startPage(page, count); - List list = Arrays.asList(null); - List
articleList = articleMapper.getSimpleInfoByTag(list); - PageInfo pageInfo = new PageInfo(articleList); - return pageInfo; + List articleByTag = articleTagMapper.findArticleByTagAndOpen(tag.getId()); + List modelList = new ArrayList<>(); + articleByTag.forEach(articleTag -> { + ArticleModel model = ModalTrans.articleToModal(articleTag.getArticle()); + model.setMdContent(null); + model.setOpen(null); + }); + return new PageData(new PageInfo(articleByTag), modelList); } - /** - * page转换 - * - * @param articleList 数据源 - * @param level 转换级别 - * @return list - */ - private List list2list(List
articleList, LevelEnum level) { - List content = new ArrayList<>(); - for (Article a : articleList) { - ArticleModel model; - switch (level.getLevelCode()) { - case 0: - model = simpleTransform(a); - break; - case 1: - model = suitableTransform(a); - break; - case 2: - model = suitableTransformForAdmin(a); - break; - case 3: - default: - model = fullTransform(a); - } - content.add(model); + private void setPreAndNextArticle(ArticleModel articleModel) { + if (articleModel == null) { + return; } - return content; + articleModel.setPreArticle(ModalTrans.articleToModal(articleMapper.getPreArticle(articleModel.getId()))); + articleModel.setNextArticle(ModalTrans.articleToModal(articleMapper.getNextArticle(articleModel.getId()))); } - - /** - * 简单的模型转换 - * [id,title,summary] - * - * @param a 源数据 - * @return 模型 - */ - private ArticleModel simpleTransform(Article a) { - ArticleModel model = new ArticleModel(); - model.setId(a.getId()); - model.setTitle(a.getTitle()); - model.setSummary(a.getSummary()); - - return model; - } - - /** - * 中等转换 - * [id,title,summary] - * + - * [original,tags,category] - * - * @param a - * @return - */ - private ArticleModel suitableTransform(Article a) { - ArticleModel model = simpleTransform(a); -// model.setAuthor(a.getUser()); -// model.setPublishDateFormat(DateFormatUtil.get(a.getPublishDate())); -// model.setOriginal(a.getType()); -// model.setCategory(categoryMapper.getNameById(a.getCategoryId())); -// String[] split = a.getTagsId().split(","); -// String[] tags = new String[split.length]; -// for (int i = 0; i < split.length; i++) { -// if (split[i] == null || "".equals(split[i])) { -// continue; -// } -// tags[i] = tagMapper.getNameById(Long.parseLong(split[i])); -// } -// model.setTags(tags); - return model; - } - - /** - * 中等转换 for admin页面 - * [id,title] - * + - * [original,UpdateDate,open,readingNumber] - * - * @param a - * @return - */ - private ArticleModel suitableTransformForAdmin(Article a) { - ArticleModel model = simpleTransform(a); -// model.setPublishDateFormat(DateFormatUtil.get(a.getPublishDate())); -// model.setUpdateDateFormat(DateFormatUtil.get(a.getUpdateDate())); -// model.setReadingNumber(a.getReadingNumber()); -// model.setOpen(a.getOpen()); -// model.setOriginal(a.getType()); -// model.setSummary(null); - return model; - } - - /** - * 全转换 - * [id,title,summary,original,tags,category] - * + - * [UpdateDate,MdContent,NextArticleId,NextArticleTitle,preArticleId,preArticleTitle,open,url,readingNumber] - * - * @param a - * @return - */ - private ArticleModel fullTransform(Article a) { - ArticleModel model = suitableTransform(a); -// model.setUpdateDateFormat(DateFormatUtil.get(a.getUpdateDate())); -// model.setMdContent(a.getMdContent()); -// model.setNextArticleId(a.getNextArticleId()); -// model.setNextArticleTitle(a.getNextArticleId() == -1 ? "无" : articleMapper.getTitleById(a.getNextArticleId())); -// model.setPreArticleId(a.getPreArticleId()); -// model.setPreArticleTitle(a.getPreArticleId() == -1 ? "无" : articleMapper.getTitleById(a.getPreArticleId())); -// model.setOpen(a.getOpen()); -// model.setUrl(a.getUrl()); -// model.setReadingNumber(a.getReadingNumber()); - return model; - } - } diff --git a/src/main/java/cn/celess/blog/util/ModalTrans.java b/src/main/java/cn/celess/blog/util/ModalTrans.java new file mode 100644 index 0000000..35ba872 --- /dev/null +++ b/src/main/java/cn/celess/blog/util/ModalTrans.java @@ -0,0 +1,37 @@ +package cn.celess.blog.util; + +import cn.celess.blog.entity.Article; +import cn.celess.blog.entity.User; +import cn.celess.blog.entity.model.ArticleModel; +import cn.celess.blog.entity.model.UserModel; +import org.springframework.beans.BeanUtils; + +/** + * @Author: 小海 + * @Date: 2020-05-24 18:04 + * @Desc: + */ +public class ModalTrans { + + public static ArticleModel articleToModal(Article article) { + if (article == null) { + return null; + } + ArticleModel articleModel = new ArticleModel(); + BeanUtils.copyProperties(article, articleModel); + articleModel.setPublishDateFormat(DateFormatUtil.get(article.getPublishDate())); + articleModel.setUpdateDateFormat(DateFormatUtil.get(article.getUpdateDate())); + articleModel.setOriginal(article.getType()); + articleModel.setCategory(article.getCategory().getName()); + articleModel.setAuthor(userToModal(article.getUser())); + return articleModel; + } + + + public static UserModel userToModal(User user) { + UserModel userModel = new UserModel(); + BeanUtils.copyProperties(user, userModel); + return userModel; + } + +} diff --git a/src/main/resources/mapper/ArticleTagMapper.xml b/src/main/resources/mapper/ArticleTagMapper.xml index b8458e1..c1062b3 100644 --- a/src/main/resources/mapper/ArticleTagMapper.xml +++ b/src/main/resources/mapper/ArticleTagMapper.xml @@ -43,8 +43,8 @@ delete from article_tag where at_id in - - (#{articleTag.id}) + + #{item.id} @@ -73,4 +73,28 @@ and tag_category.t_id = article_tag.t_id + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/articleMapper.xml b/src/main/resources/mapper/articleMapper.xml index 19fc2c9..c15deb5 100644 --- a/src/main/resources/mapper/articleMapper.xml +++ b/src/main/resources/mapper/articleMapper.xml @@ -141,6 +141,15 @@ order by articleId desc + + + + + \ No newline at end of file diff --git a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java index 4b71094..4d16a34 100644 --- a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java +++ b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java @@ -3,10 +3,11 @@ package cn.celess.blog.controller; import cn.celess.blog.BaseTest; import cn.celess.blog.entity.Article; import cn.celess.blog.entity.Response; +import cn.celess.blog.entity.Tag; import cn.celess.blog.entity.model.ArticleModel; +import cn.celess.blog.entity.model.PageData; import cn.celess.blog.entity.request.ArticleReq; import cn.celess.blog.mapper.ArticleMapper; -import com.github.pagehelper.PageInfo; import net.sf.json.JSONObject; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +32,8 @@ public class ArticleControllerTest extends BaseTest { articleReq.setTitle("test-" + UUID.randomUUID().toString()); articleReq.setMdContent("# test title"); articleReq.setCategory("随笔"); - articleReq.setTags("test,SpringMvc"); + String[] tagList = {"tag", "category"}; + articleReq.setTags(tagList); articleReq.setOpen(true); articleReq.setType(true); articleReq.setUrl("http://xxxx.com"); @@ -80,13 +82,11 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(articleModel.getCategory()); assertNotNull(articleModel.getPublishDateFormat()); assertNotNull(articleModel.getMdContent()); - assertNotNull(articleModel.getNextArticleId()); - assertNotNull(articleModel.getNextArticleTitle()); - assertNotNull(articleModel.getPreArticleId()); - assertNotNull(articleModel.getPreArticleTitle()); + assertNotNull(articleModel.getPreArticle()); + assertNull(articleModel.getNextArticle()); assertNotNull(articleModel.getOpen()); assertNotNull(articleModel.getReadingNumber()); - assertNotNull(articleModel.getAuthorName()); + assertNotNull(articleModel.getAuthor()); assertNotNull(articleModel.getUrl()); }); } catch (Exception e) { @@ -96,11 +96,11 @@ public class ArticleControllerTest extends BaseTest { @Test public void delete() { - long articleId = articleMapper.getLastestArticleId(); + Article article = articleMapper.getLastestArticle(); try { // 未登录删除文章 - mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId) + mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId()) ).andDo(result -> { assertEquals(HAVE_NOT_LOG_IN.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code) @@ -108,14 +108,14 @@ public class ArticleControllerTest extends BaseTest { }); // user 权限删除文章 String token = userLogin(); - mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId) + mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId()) .header("Authorization", token)) .andDo(result -> assertEquals(PERMISSION_ERROR.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)) ); // admin 权限删除文章 token = adminLogin(); - mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId) + mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId()) .header("Authorization", token)) .andDo(result -> { JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString()); @@ -140,8 +140,8 @@ public class ArticleControllerTest extends BaseTest { articleReq.setOpen(!article.getOpen()); String tag1 = randomStr(4); String tag2 = randomStr(4); - String tag = "test," + tag1 + "," + tag2; - articleReq.setTags(tag); + String[] tagList = {"test", tag1, tag2}; + articleReq.setTags(tagList); articleReq.setTitle("test-" + article.getTitle()); try { // Admin 权限 @@ -160,15 +160,11 @@ public class ArticleControllerTest extends BaseTest { assertEquals(articleReq.getTitle(), a.getTitle()); assertEquals(articleReq.getType(), a.getOriginal()); // Tag - List asList = Arrays.asList(a.getTags()); - assertTrue(asList.contains("test")); - assertTrue(asList.contains(tag1)); - assertTrue(asList.contains(tag2)); + List asList = a.getTags(); + assertEquals(3, asList.size()); assertEquals(articleReq.getOpen(), a.getOpen()); assertEquals(articleReq.getId(), a.getId()); }); - - } catch (Exception e) { e.printStackTrace(); } @@ -207,17 +203,13 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(a.getMdContent()); assertNotNull(a.getUrl()); assertNotNull(a.getUpdateDateFormat()); - assertNotNull(a.getPreArticleId()); - assertNotNull(a.getPreArticleId()); - assertNotNull(a.getNextArticleId()); - assertNotNull(a.getNextArticleTitle()); + assertTrue(a.getPreArticle() != null || a.getNextArticle() != null); assertNotNull(a.getReadingNumber()); - // assertNotNull(a.getOpen()); assertNotNull(a.getOriginal()); assertNotNull(a.getPublishDateFormat()); assertNotNull(a.getCategory()); assertNotNull(a.getTags()); - assertNotNull(a.getAuthorName()); + assertNotNull(a.getAuthor()); }); } catch (Exception e) { e.printStackTrace(); @@ -242,14 +234,12 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(response.getResult()); // 判断pageInfo是否包装完全 JSONObject resultJson = JSONObject.fromObject(response.getResult()); - PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class); - assertNotEquals(0, pageInfo.getTotal()); - assertNotEquals(0, pageInfo.getStartRow()); - assertNotEquals(0, pageInfo.getEndRow()); - assertEquals(1, pageInfo.getPageNum()); - assertEquals(5, pageInfo.getPageSize()); + PageData pageData = (PageData) JSONObject.toBean(resultJson, PageData.class); + assertNotEquals(0, pageData.getTotal()); + assertEquals(1, pageData.getPageNum()); + assertEquals(5, pageData.getPageSize()); // 内容完整 - for (Object arc : pageInfo.getList()) { + for (Object arc : pageData.getList()) { ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class); assertNotNull(a.getTitle()); assertNotNull(a.getId()); @@ -258,7 +248,9 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(a.getPublishDateFormat()); assertNotNull(a.getCategory()); assertNotNull(a.getTags()); - assertNotNull(a.getAuthorName()); + assertNotNull(a.getAuthor()); + assertNull(a.getOpen()); + assertNull(a.getMdContent()); } }); } catch (Exception e) { @@ -299,14 +291,12 @@ public class ArticleControllerTest extends BaseTest { assertEquals(SUCCESS.getCode(), adminLogin.getInt(Code)); assertNotNull(adminLogin.getString(Result)); // 判断pageInfo是否包装完全 - PageInfo pageInfo = (PageInfo) JSONObject.toBean(adminLogin.getJSONObject(Result), PageInfo.class); - assertNotEquals(0, pageInfo.getTotal()); - assertNotEquals(0, pageInfo.getStartRow()); - assertNotEquals(0, pageInfo.getEndRow()); - assertEquals(1, pageInfo.getPageNum()); - assertEquals(10, pageInfo.getPageSize()); + PageData pageData = (PageData) JSONObject.toBean(adminLogin.getJSONObject(Result), PageData.class); + assertNotEquals(0, pageData.getTotal()); + assertEquals(1, pageData.getPageNum()); + assertEquals(10, pageData.getPageSize()); // 内容完整 - for (Object arc : pageInfo.getList()) { + for (Object arc : pageData.getList()) { ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class); assertNotNull(a.getTitle()); assertNotNull(a.getId()); @@ -314,6 +304,9 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(a.getPublishDateFormat()); assertNotNull(a.getOpen()); assertNotNull(a.getReadingNumber()); + assertNotNull(a.getLikeCount()); + assertNotNull(a.getDislikeCount()); + assertNull(a.getMdContent()); } }); } catch (Exception e) { @@ -338,13 +331,11 @@ public class ArticleControllerTest extends BaseTest { .andDo(result -> { JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString()); assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code)); - PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class); - assertNotEquals(0, pageInfo.getTotal()); - assertNotEquals(0, pageInfo.getStartRow()); - assertNotEquals(0, pageInfo.getEndRow()); - assertEquals(1, pageInfo.getPageNum()); - assertEquals(10, pageInfo.getPageSize()); - for (Object arc : pageInfo.getList()) { + PageData pageData = (PageData) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class); + assertNotEquals(0, pageData.getTotal()); + assertEquals(1, pageData.getPageNum()); + assertEquals(10, pageData.getPageSize()); + for (Object arc : pageData.getList()) { JSONObject jsonObject1 = JSONObject.fromObject(arc); assertNotEquals(0, jsonObject1.getInt("id")); assertNotNull(jsonObject1.getString("title")); @@ -373,14 +364,12 @@ public class ArticleControllerTest extends BaseTest { .andDo(result -> { JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString()); assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code)); - PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class); - assertNotEquals(0, pageInfo.getTotal()); - assertNotEquals(0, pageInfo.getStartRow()); - assertNotEquals(0, pageInfo.getEndRow()); - assertEquals(1, pageInfo.getPageNum()); - assertEquals(10, pageInfo.getPageSize()); + PageData pageData = (PageData) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class); + assertNotEquals(0, pageData.getTotal()); + assertEquals(1, pageData.getPageNum()); + assertEquals(10, pageData.getPageSize()); - for (Object arc : pageInfo.getList()) { + for (Object arc : pageData.getList()) { JSONObject jsonObject1 = JSONObject.fromObject(arc); assertNotEquals(0, jsonObject1.getInt("id")); assertNotNull(jsonObject1.getString("title")); diff --git a/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java b/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java index 5a7921a..1b7d785 100644 --- a/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java +++ b/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java @@ -162,6 +162,13 @@ public class ArticleMapperTest extends BaseTest { assertNotEquals(0, allByCategoryId.size()); } + @Test + public void findAllByCategoryIdAndOpen() { + List
allByCategoryId = articleMapper.findAllByCategoryId(1); + assertNotEquals(0, allByCategoryId.size()); + allByCategoryId.forEach(article -> assertTrue(article.getOpen())); + } + @Test public void findAll() { List
allByCategoryId = articleMapper.findAll(); @@ -173,6 +180,21 @@ public class ArticleMapperTest extends BaseTest { assertNotEquals(0, articleMapper.count()); } + @Test + public void getPreArticle() { + ArticleTag articleTag = generateArticle(); + Article preArticle = articleMapper.getPreArticle(articleTag.getArticle().getId()); + assertNotNull(preArticle); + assertTrue(preArticle.getId() < articleTag.getArticle().getId()); + } + + @Test + public void getNextArticle() { + Article getNextArticle = articleMapper.getNextArticle(3L); + assertNotNull(getNextArticle); + assertTrue(getNextArticle.getId() > 3L); + } + private ArticleTag generateArticle() { String randomText = UUID.randomUUID().toString(); @@ -199,5 +221,4 @@ public class ArticleMapperTest extends BaseTest { return articleTag; } - } \ No newline at end of file diff --git a/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java b/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java index 115d90c..fb8715d 100644 --- a/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java +++ b/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java @@ -90,11 +90,27 @@ public class ArticleTagMapperTest extends BaseTest { articleTagMapper.insert(articleTag); List allByArticleId = articleTagMapper.findAllByArticleId(-1L); - assertEquals(6, allByArticleId.size()); + assertTrue(allByArticleId.size() >= 6); int lines = articleTagMapper.deleteMultiById(allByArticleId); - assertEquals(6, lines); + assertTrue(lines >= 6); } + @Test + public void findArticleByTag() { + ArticleTag articleTag = generateArticle(); + List articleByTag = articleTagMapper.findArticleByTag(21L); + assertNotEquals(0, articleByTag.size()); + articleByTag.forEach(articleTag1 -> assertEquals(articleTag.getTag().getName(), articleTag1.getTag().getName())); + } + + @Test + public void findArticleByTagAndOpen() { + ArticleTag articleTag = generateArticle(); + List articleByTag = articleTagMapper.findArticleByTag(21L); + assertNotEquals(0, articleByTag.size()); + articleByTag.forEach(articleTag1 -> assertEquals(articleTag.getTag().getName(), articleTag1.getTag().getName())); + articleByTag.forEach(articleTag1 -> assertTrue(articleTag1.getArticle().getOpen())); + } private ArticleTag generateArticle() { String randomText = UUID.randomUUID().toString(); @@ -122,5 +138,4 @@ public class ArticleTagMapperTest extends BaseTest { return articleTag; } - } \ No newline at end of file