调整数据库字段,优化部分接口 #1
@@ -80,10 +80,10 @@ public class ArticleController {
|
|||||||
public Response retrieveOneById(@PathVariable("articleID") long articleId,
|
public Response retrieveOneById(@PathVariable("articleID") long articleId,
|
||||||
@RequestParam(value = "update", defaultValue = "false") boolean is4update,
|
@RequestParam(value = "update", defaultValue = "false") boolean is4update,
|
||||||
HttpServletRequest request) {
|
HttpServletRequest request) {
|
||||||
ArticleModel article = articleService.retrieveOneByID(articleId, is4update);
|
ArticleModel article = articleService.retrieveOneById(articleId, is4update);
|
||||||
if (article.getOpen()) {
|
if (article.getOpen()) {
|
||||||
return ResponseUtil.success(article);
|
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.success(article);
|
||||||
}
|
}
|
||||||
return ResponseUtil.response(ResponseEnum.PERMISSION_ERROR, null);
|
return ResponseUtil.response(ResponseEnum.PERMISSION_ERROR, null);
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package cn.celess.blog.entity.model;
|
package cn.celess.blog.entity.model;
|
||||||
|
|
||||||
|
import cn.celess.blog.entity.Tag;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author : xiaohai
|
* @author : xiaohai
|
||||||
@@ -57,40 +59,28 @@ public class ArticleModel {
|
|||||||
/**
|
/**
|
||||||
* 标签
|
* 标签
|
||||||
*/
|
*/
|
||||||
private String[] tags;
|
private List<Tag> tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作者
|
* 作者
|
||||||
*/
|
*/
|
||||||
private Long authorId;
|
private UserModel author;
|
||||||
|
|
||||||
/**
|
private ArticleModel preArticle;
|
||||||
* 作者名字
|
|
||||||
*/
|
|
||||||
private String authorName;
|
|
||||||
|
|
||||||
/**
|
private ArticleModel nextArticle;
|
||||||
* 上一篇文章
|
|
||||||
*/
|
|
||||||
private Long preArticleId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下一篇文章
|
|
||||||
*/
|
|
||||||
private Long nextArticleId;
|
|
||||||
|
|
||||||
private String preArticleTitle;
|
|
||||||
|
|
||||||
private String nextArticleTitle;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 阅读数
|
* 阅读数
|
||||||
*/
|
*/
|
||||||
private Long readingNumber;
|
private Long readingNumber;
|
||||||
|
|
||||||
|
private Integer likeCount;
|
||||||
|
|
||||||
|
private Integer dislikeCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文章的状态 true:公开 false:不公开
|
* 文章的状态 true:公开 false:不公开
|
||||||
*/
|
*/
|
||||||
private Boolean open;
|
private Boolean open;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
38
src/main/java/cn/celess/blog/entity/model/PageData.java
Normal file
38
src/main/java/cn/celess/blog/entity/model/PageData.java
Normal file
@@ -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<T> {
|
||||||
|
|
||||||
|
private List<T> 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<T> data) {
|
||||||
|
this(pageInfo);
|
||||||
|
this.list = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,8 +37,14 @@ public interface ArticleMapper {
|
|||||||
|
|
||||||
List<Article> findAllByCategoryId(long id);
|
List<Article> findAllByCategoryId(long id);
|
||||||
|
|
||||||
|
List<Article> findAllByCategoryIdAndOpen(long id);
|
||||||
|
|
||||||
List<Article> findAll();
|
List<Article> findAll();
|
||||||
|
|
||||||
|
Article getPreArticle(Long id);
|
||||||
|
|
||||||
|
Article getNextArticle(Long id);
|
||||||
|
|
||||||
int updateReadingNumber(long id);
|
int updateReadingNumber(long id);
|
||||||
|
|
||||||
long count();
|
long count();
|
||||||
|
|||||||
@@ -28,4 +28,8 @@ public interface ArticleTagMapper {
|
|||||||
List<ArticleTag> findAllByArticleId(Long articleId);
|
List<ArticleTag> findAllByArticleId(Long articleId);
|
||||||
|
|
||||||
int deleteMultiById(List<ArticleTag> articleTags);
|
int deleteMultiById(List<ArticleTag> articleTags);
|
||||||
|
|
||||||
|
List<ArticleTag> findArticleByTag(Long tagId);
|
||||||
|
|
||||||
|
List<ArticleTag> findArticleByTagAndOpen(Long tagId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
package cn.celess.blog.service.serviceimpl;
|
package cn.celess.blog.service.serviceimpl;
|
||||||
|
|
||||||
import cn.celess.blog.enmu.LevelEnum;
|
|
||||||
import cn.celess.blog.enmu.ResponseEnum;
|
import cn.celess.blog.enmu.ResponseEnum;
|
||||||
import cn.celess.blog.enmu.RoleEnum;
|
import cn.celess.blog.enmu.RoleEnum;
|
||||||
import cn.celess.blog.entity.*;
|
import cn.celess.blog.entity.*;
|
||||||
import cn.celess.blog.entity.model.ArticleModel;
|
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.entity.request.ArticleReq;
|
||||||
import cn.celess.blog.exception.MyException;
|
import cn.celess.blog.exception.MyException;
|
||||||
import cn.celess.blog.mapper.*;
|
import cn.celess.blog.mapper.*;
|
||||||
import cn.celess.blog.service.ArticleService;
|
import cn.celess.blog.service.ArticleService;
|
||||||
import cn.celess.blog.service.UserService;
|
import cn.celess.blog.service.UserService;
|
||||||
import cn.celess.blog.util.DateFormatUtil;
|
import cn.celess.blog.util.*;
|
||||||
import cn.celess.blog.util.RedisUserUtil;
|
|
||||||
import cn.celess.blog.util.RegexUtil;
|
|
||||||
import cn.celess.blog.util.StringFromHtmlUtil;
|
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.youbenzi.mdtool.tool.MDTool;
|
import com.youbenzi.mdtool.tool.MDTool;
|
||||||
import org.slf4j.Logger;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -26,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@@ -35,8 +31,8 @@ import java.util.List;
|
|||||||
* @date : 2019/03/28 15:21
|
* @date : 2019/03/28 15:21
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class ArticleServiceImpl implements ArticleService {
|
public class ArticleServiceImpl implements ArticleService {
|
||||||
public static final Logger logger = LoggerFactory.getLogger(ArticleServiceImpl.class);
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
ArticleMapper articleMapper;
|
ArticleMapper articleMapper;
|
||||||
@@ -86,22 +82,16 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST);
|
throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST);
|
||||||
}
|
}
|
||||||
// 查看是否存在已有的分类
|
// 查看是否存在已有的分类
|
||||||
Category category = (Category) categoryMapper.findCategoryByName(reqBody.getCategory());
|
Category category = categoryMapper.findCategoryByName(reqBody.getCategory());
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
|
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 构建 需要写入数据库的对象数据
|
// 构建 需要写入数据库的对象数据
|
||||||
Article article = new Article();
|
Article article = new Article();
|
||||||
article.setTitle(reqBody.getTitle());
|
BeanUtils.copyProperties(reqBody, article);
|
||||||
article.setOpen(reqBody.getOpen());
|
|
||||||
article.setMdContent(reqBody.getMdContent());
|
|
||||||
article.setUrl(reqBody.getUrl());
|
|
||||||
article.setType(reqBody.getType());
|
|
||||||
|
|
||||||
article.setUser(redisUserUtil.get());
|
article.setUser(redisUserUtil.get());
|
||||||
article.setPublishDate(new Date());
|
|
||||||
|
|
||||||
//markdown->html->summary
|
//markdown->html->summary
|
||||||
String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent()));
|
String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent()));
|
||||||
@@ -113,14 +103,13 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
|
|
||||||
//文章存数据库
|
//文章存数据库
|
||||||
articleMapper.insert(article);
|
articleMapper.insert(article);
|
||||||
|
|
||||||
//将标签写入数据库
|
//将标签写入数据库
|
||||||
for (String tagName : reqBody.getTags()) {
|
for (String tagName : reqBody.getTags()) {
|
||||||
if (tagName.replaceAll(" ", "").length() == 0) {
|
if (tagName.replaceAll(" ", "").length() == 0) {
|
||||||
//单个标签只含空格
|
//单个标签只含空格
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Tag tag = (Tag) tagMapper.findTagByName(tagName);
|
Tag tag = tagMapper.findTagByName(tagName);
|
||||||
if (tag == null) {
|
if (tag == null) {
|
||||||
tag = new Tag();
|
tag = new Tag();
|
||||||
tag.setName(tagName);
|
tag.setName(tagName);
|
||||||
@@ -129,9 +118,12 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
ArticleTag articleTag = new ArticleTag(article, tag);
|
ArticleTag articleTag = new ArticleTag(article, tag);
|
||||||
articleTagMapper.insert(articleTag);
|
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
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -189,7 +181,7 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
article.setUrl(reqBody.getUrl());
|
article.setUrl(reqBody.getUrl());
|
||||||
}
|
}
|
||||||
if (reqBody.getCategory() != null && !reqBody.getCategory().replaceAll(" ", "").isEmpty()) {
|
if (reqBody.getCategory() != null && !reqBody.getCategory().replaceAll(" ", "").isEmpty()) {
|
||||||
Category category = (Category) categoryMapper.findCategoryByName(reqBody.getCategory());
|
Category category = categoryMapper.findCategoryByName(reqBody.getCategory());
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
category = new Category();
|
category = new Category();
|
||||||
category.setName(reqBody.getCategory());
|
category.setName(reqBody.getCategory());
|
||||||
@@ -198,12 +190,8 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
article.setCategory(category);
|
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()));
|
String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent()));
|
||||||
article.setSummary(str.length() > 240 ? str.substring(0, 240) + "......" : str);
|
article.setSummary(str.length() > 240 ? str.substring(0, 240) + "......" : str);
|
||||||
articleMapper.update(article);
|
articleMapper.update(article);
|
||||||
@@ -213,12 +201,13 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
List<ArticleTag> updateList = new ArrayList<>();
|
List<ArticleTag> updateList = new ArrayList<>();
|
||||||
List<ArticleTag> deleteList = new ArrayList<>();
|
List<ArticleTag> deleteList = new ArrayList<>();
|
||||||
|
|
||||||
|
// 获取要更新 的标签
|
||||||
for (String tag : reqBody.getTags()) {
|
for (String tag : reqBody.getTags()) {
|
||||||
boolean contain = allByArticleId.stream().anyMatch(articleTag -> articleTag.getTag().getName().equals(tag));
|
boolean contain = allByArticleId.stream().anyMatch(articleTag -> articleTag.getTag().getName().equals(tag));
|
||||||
if (!contain) {
|
if (!contain) {
|
||||||
ArticleTag articleTag = new ArticleTag();
|
ArticleTag articleTag = new ArticleTag();
|
||||||
articleTag.setArticle(article);
|
articleTag.setArticle(article);
|
||||||
Tag tagByName = (Tag) tagMapper.findTagByName(tag);
|
Tag tagByName = tagMapper.findTagByName(tag);
|
||||||
if (tagByName == null) {
|
if (tagByName == null) {
|
||||||
tagByName = new Tag(tag);
|
tagByName = new Tag(tag);
|
||||||
tagMapper.insert(tagByName);
|
tagMapper.insert(tagByName);
|
||||||
@@ -227,7 +216,7 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
updateList.add(articleTag);
|
updateList.add(articleTag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 获取要删除的标签
|
||||||
allByArticleId.forEach(articleTag -> {
|
allByArticleId.forEach(articleTag -> {
|
||||||
boolean contain = false;
|
boolean contain = false;
|
||||||
for (String tag : reqBody.getTags()) {
|
for (String tag : reqBody.getTags()) {
|
||||||
@@ -251,12 +240,14 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
|
|
||||||
//更新完成移除
|
//更新完成移除
|
||||||
request.getSession().removeAttribute("article4update");
|
request.getSession().removeAttribute("article4update");
|
||||||
return fullTransform(article);
|
ArticleModel articleModel = ModalTrans.articleToModal(articleMapper.findArticleById(article.getId()));
|
||||||
|
setPreAndNextArticle(articleModel);
|
||||||
|
return articleModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArticleModel retrieveOneByID(long articleID, boolean is4update) {
|
public ArticleModel retrieveOneById(long articleId, boolean is4update) {
|
||||||
Article article = articleMapper.findArticleById(articleID);
|
Article article = articleMapper.findArticleById(articleId);
|
||||||
if (article == null) {
|
if (article == null) {
|
||||||
throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST);
|
throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST);
|
||||||
}
|
}
|
||||||
@@ -266,178 +257,101 @@ public class ArticleServiceImpl implements ArticleService {
|
|||||||
throw new MyException(ResponseEnum.ARTICLE_NOT_PUBLIC);
|
throw new MyException(ResponseEnum.ARTICLE_NOT_PUBLIC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
article.setReadingNumber(article.getReadingNumber() + 1);
|
ArticleModel articleModel = ModalTrans.articleToModal(article);
|
||||||
|
|
||||||
if (is4update) {
|
if (is4update) {
|
||||||
//因更新而获取文章 不需要增加阅读量
|
//因更新而获取文章 不需要增加阅读量
|
||||||
request.getSession().setAttribute("article4update", article);
|
request.getSession().setAttribute("article4update", article);
|
||||||
return fullTransform(article);
|
return articleModel;
|
||||||
}
|
}
|
||||||
articleMapper.setReadingNumber(article.getReadingNumber() + 1, articleID);
|
setPreAndNextArticle(articleModel);
|
||||||
return fullTransform(article);
|
articleMapper.updateReadingNumber(articleId);
|
||||||
|
return articleModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param count 数目
|
* @param count 数目
|
||||||
* @param page 页面 默认减1
|
* @param page 页面 默认减1
|
||||||
* @return
|
* @return PageInfo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageInfo adminArticles(int count, int page) {
|
public PageData<ArticleModel> adminArticles(int count, int page) {
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
List<Article> articleList = articleMapper.findAll();
|
List<Article> articleList = articleMapper.findAll();
|
||||||
PageInfo pageInfo = new PageInfo(articleList);
|
PageData<ArticleModel> pageData = new PageData<ArticleModel>(new PageInfo<Article>(articleList));
|
||||||
pageInfo.setList(list2list(articleList, LevelEnum.BETWEEN_M_AND_H));
|
List<ArticleModel> articleModelList = new ArrayList<>();
|
||||||
return pageInfo;
|
articleList.forEach(article -> {
|
||||||
|
ArticleModel articleModel = ModalTrans.articleToModal(article);
|
||||||
|
articleModel.setMdContent(null);
|
||||||
|
articleModelList.add(articleModel);
|
||||||
|
});
|
||||||
|
pageData.setList(articleModelList);
|
||||||
|
return pageData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo retrievePageForOpen(int count, int page) {
|
public PageData<ArticleModel> retrievePageForOpen(int count, int page) {
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
List<Article> articleList = articleMapper.findAllByOpen(true);
|
List<Article> articleList = articleMapper.findAllByOpen(true);
|
||||||
PageInfo pageInfo = new PageInfo(articleList);
|
PageData<ArticleModel> pageData = new PageData<>(new PageInfo<Article>(articleList));
|
||||||
pageInfo.setList(list2list(articleList, LevelEnum.MIDDLE));
|
|
||||||
return pageInfo;
|
List<ArticleModel> 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
|
@Override
|
||||||
public PageInfo findByCategory(String name, int page, int count) {
|
public PageData<ArticleModel> findByCategory(String name, int page, int count) {
|
||||||
Long idByName = categoryMapper.getIdByName(name);
|
Category category = categoryMapper.findCategoryByName(name);
|
||||||
if (idByName == null) {
|
if (category == null) {
|
||||||
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
|
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
|
||||||
}
|
}
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
PageInfo pageInfo = new PageInfo(articleMapper.getSimpleInfoByCategory(idByName));
|
List<Article> open = articleMapper.findAllByCategoryIdAndOpen(category.getId());
|
||||||
return pageInfo;
|
|
||||||
|
List<ArticleModel> 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<ArticleModel>(new PageInfo<Article>(open), modelList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo findByTag(String name, int page, int count) {
|
public PageData<ArticleModel> findByTag(String name, int page, int count) {
|
||||||
Tag tag = (Tag) tagMapper.findTagByName(name);
|
Tag tag = tagMapper.findTagByName(name);
|
||||||
if (tag == null) {
|
if (tag == null) {
|
||||||
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
|
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
|
||||||
}
|
}
|
||||||
// TODO :
|
|
||||||
PageHelper.startPage(page, count);
|
PageHelper.startPage(page, count);
|
||||||
List<String> list = Arrays.asList(null);
|
List<ArticleTag> articleByTag = articleTagMapper.findArticleByTagAndOpen(tag.getId());
|
||||||
List<Article> articleList = articleMapper.getSimpleInfoByTag(list);
|
List<ArticleModel> modelList = new ArrayList<>();
|
||||||
PageInfo pageInfo = new PageInfo(articleList);
|
articleByTag.forEach(articleTag -> {
|
||||||
return pageInfo;
|
ArticleModel model = ModalTrans.articleToModal(articleTag.getArticle());
|
||||||
|
model.setMdContent(null);
|
||||||
|
model.setOpen(null);
|
||||||
|
});
|
||||||
|
return new PageData<ArticleModel>(new PageInfo<ArticleTag>(articleByTag), modelList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private void setPreAndNextArticle(ArticleModel articleModel) {
|
||||||
* page转换
|
if (articleModel == null) {
|
||||||
*
|
return;
|
||||||
* @param articleList 数据源
|
|
||||||
* @param level 转换级别
|
|
||||||
* @return list
|
|
||||||
*/
|
|
||||||
private List<ArticleModel> list2list(List<Article> articleList, LevelEnum level) {
|
|
||||||
List<ArticleModel> 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);
|
articleModel.setPreArticle(ModalTrans.articleToModal(articleMapper.getPreArticle(articleModel.getId())));
|
||||||
|
articleModel.setNextArticle(ModalTrans.articleToModal(articleMapper.getNextArticle(articleModel.getId())));
|
||||||
}
|
}
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 简单的模型转换
|
|
||||||
* [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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
37
src/main/java/cn/celess/blog/util/ModalTrans.java
Normal file
37
src/main/java/cn/celess/blog/util/ModalTrans.java
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -43,8 +43,8 @@
|
|||||||
|
|
||||||
<delete id="deleteMultiById">
|
<delete id="deleteMultiById">
|
||||||
delete from article_tag where at_id in
|
delete from article_tag where at_id in
|
||||||
<foreach item="item" collection="list" separator=",">
|
<foreach item="item" collection="list" open="(" close=")" separator=",">
|
||||||
(#{articleTag.id})
|
#{item.id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
@@ -73,4 +73,28 @@
|
|||||||
and tag_category.t_id = article_tag.t_id
|
and tag_category.t_id = article_tag.t_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="findArticleByTag" resultMap="articleTagResultMap">
|
||||||
|
select *
|
||||||
|
from tag_category,
|
||||||
|
article,
|
||||||
|
article_tag
|
||||||
|
where tag_category.t_id = #{tagId}
|
||||||
|
and is_category = false
|
||||||
|
and tag_category.t_id = article_tag.t_id
|
||||||
|
and article_tag.a_id = article.a_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findArticleByTagAndOpen" resultMap="articleTagResultMap">
|
||||||
|
select *
|
||||||
|
from tag_category,
|
||||||
|
article,
|
||||||
|
article_tag
|
||||||
|
where tag_category.t_id = #{tagId}
|
||||||
|
and is_category = false
|
||||||
|
and tag_category.t_id = article_tag.t_id
|
||||||
|
and article.a_is_open = true
|
||||||
|
and article_tag.a_id = article.a_id
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -141,6 +141,15 @@
|
|||||||
order by articleId desc
|
order by articleId desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="findAllByCategoryIdAndOpen" resultMap="articleViewResultMap">
|
||||||
|
select *
|
||||||
|
from articleView
|
||||||
|
where categoryId = #{id}
|
||||||
|
and isDelete = false
|
||||||
|
and isOpen = true
|
||||||
|
order by articleId desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="findAll" resultMap="articleViewResultMap">
|
<select id="findAll" resultMap="articleViewResultMap">
|
||||||
select *
|
select *
|
||||||
@@ -155,5 +164,22 @@
|
|||||||
from article;
|
from article;
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getPreArticle" resultMap="articleViewResultMap">
|
||||||
|
select *
|
||||||
|
from articleView
|
||||||
|
where articleId = (select max(articleId)
|
||||||
|
from articleView
|
||||||
|
where articleId < #{id}
|
||||||
|
)
|
||||||
|
</select>
|
||||||
|
<select id="getNextArticle" resultMap="articleViewResultMap">
|
||||||
|
select *
|
||||||
|
from articleView
|
||||||
|
where articleId = (select min(articleId)
|
||||||
|
from articleView
|
||||||
|
where articleId > #{id}
|
||||||
|
)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -3,10 +3,11 @@ package cn.celess.blog.controller;
|
|||||||
import cn.celess.blog.BaseTest;
|
import cn.celess.blog.BaseTest;
|
||||||
import cn.celess.blog.entity.Article;
|
import cn.celess.blog.entity.Article;
|
||||||
import cn.celess.blog.entity.Response;
|
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.ArticleModel;
|
||||||
|
import cn.celess.blog.entity.model.PageData;
|
||||||
import cn.celess.blog.entity.request.ArticleReq;
|
import cn.celess.blog.entity.request.ArticleReq;
|
||||||
import cn.celess.blog.mapper.ArticleMapper;
|
import cn.celess.blog.mapper.ArticleMapper;
|
||||||
import com.github.pagehelper.PageInfo;
|
|
||||||
import net.sf.json.JSONObject;
|
import net.sf.json.JSONObject;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -31,7 +32,8 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
articleReq.setTitle("test-" + UUID.randomUUID().toString());
|
articleReq.setTitle("test-" + UUID.randomUUID().toString());
|
||||||
articleReq.setMdContent("# test title");
|
articleReq.setMdContent("# test title");
|
||||||
articleReq.setCategory("随笔");
|
articleReq.setCategory("随笔");
|
||||||
articleReq.setTags("test,SpringMvc");
|
String[] tagList = {"tag", "category"};
|
||||||
|
articleReq.setTags(tagList);
|
||||||
articleReq.setOpen(true);
|
articleReq.setOpen(true);
|
||||||
articleReq.setType(true);
|
articleReq.setType(true);
|
||||||
articleReq.setUrl("http://xxxx.com");
|
articleReq.setUrl("http://xxxx.com");
|
||||||
@@ -80,13 +82,11 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertNotNull(articleModel.getCategory());
|
assertNotNull(articleModel.getCategory());
|
||||||
assertNotNull(articleModel.getPublishDateFormat());
|
assertNotNull(articleModel.getPublishDateFormat());
|
||||||
assertNotNull(articleModel.getMdContent());
|
assertNotNull(articleModel.getMdContent());
|
||||||
assertNotNull(articleModel.getNextArticleId());
|
assertNotNull(articleModel.getPreArticle());
|
||||||
assertNotNull(articleModel.getNextArticleTitle());
|
assertNull(articleModel.getNextArticle());
|
||||||
assertNotNull(articleModel.getPreArticleId());
|
|
||||||
assertNotNull(articleModel.getPreArticleTitle());
|
|
||||||
assertNotNull(articleModel.getOpen());
|
assertNotNull(articleModel.getOpen());
|
||||||
assertNotNull(articleModel.getReadingNumber());
|
assertNotNull(articleModel.getReadingNumber());
|
||||||
assertNotNull(articleModel.getAuthorName());
|
assertNotNull(articleModel.getAuthor());
|
||||||
assertNotNull(articleModel.getUrl());
|
assertNotNull(articleModel.getUrl());
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -96,11 +96,11 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void delete() {
|
public void delete() {
|
||||||
long articleId = articleMapper.getLastestArticleId();
|
Article article = articleMapper.getLastestArticle();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 未登录删除文章
|
// 未登录删除文章
|
||||||
mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId)
|
mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId())
|
||||||
).andDo(result -> {
|
).andDo(result -> {
|
||||||
assertEquals(HAVE_NOT_LOG_IN.getCode(),
|
assertEquals(HAVE_NOT_LOG_IN.getCode(),
|
||||||
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)
|
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)
|
||||||
@@ -108,14 +108,14 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
});
|
});
|
||||||
// user 权限删除文章
|
// user 权限删除文章
|
||||||
String token = userLogin();
|
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))
|
.header("Authorization", token))
|
||||||
.andDo(result -> assertEquals(PERMISSION_ERROR.getCode(),
|
.andDo(result -> assertEquals(PERMISSION_ERROR.getCode(),
|
||||||
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code))
|
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code))
|
||||||
);
|
);
|
||||||
// admin 权限删除文章
|
// admin 权限删除文章
|
||||||
token = adminLogin();
|
token = adminLogin();
|
||||||
mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId)
|
mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId())
|
||||||
.header("Authorization", token))
|
.header("Authorization", token))
|
||||||
.andDo(result -> {
|
.andDo(result -> {
|
||||||
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
|
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
|
||||||
@@ -140,8 +140,8 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
articleReq.setOpen(!article.getOpen());
|
articleReq.setOpen(!article.getOpen());
|
||||||
String tag1 = randomStr(4);
|
String tag1 = randomStr(4);
|
||||||
String tag2 = randomStr(4);
|
String tag2 = randomStr(4);
|
||||||
String tag = "test," + tag1 + "," + tag2;
|
String[] tagList = {"test", tag1, tag2};
|
||||||
articleReq.setTags(tag);
|
articleReq.setTags(tagList);
|
||||||
articleReq.setTitle("test-" + article.getTitle());
|
articleReq.setTitle("test-" + article.getTitle());
|
||||||
try {
|
try {
|
||||||
// Admin 权限
|
// Admin 权限
|
||||||
@@ -160,15 +160,11 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertEquals(articleReq.getTitle(), a.getTitle());
|
assertEquals(articleReq.getTitle(), a.getTitle());
|
||||||
assertEquals(articleReq.getType(), a.getOriginal());
|
assertEquals(articleReq.getType(), a.getOriginal());
|
||||||
// Tag
|
// Tag
|
||||||
List<String> asList = Arrays.asList(a.getTags());
|
List<Tag> asList = a.getTags();
|
||||||
assertTrue(asList.contains("test"));
|
assertEquals(3, asList.size());
|
||||||
assertTrue(asList.contains(tag1));
|
|
||||||
assertTrue(asList.contains(tag2));
|
|
||||||
assertEquals(articleReq.getOpen(), a.getOpen());
|
assertEquals(articleReq.getOpen(), a.getOpen());
|
||||||
assertEquals(articleReq.getId(), a.getId());
|
assertEquals(articleReq.getId(), a.getId());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -207,17 +203,13 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertNotNull(a.getMdContent());
|
assertNotNull(a.getMdContent());
|
||||||
assertNotNull(a.getUrl());
|
assertNotNull(a.getUrl());
|
||||||
assertNotNull(a.getUpdateDateFormat());
|
assertNotNull(a.getUpdateDateFormat());
|
||||||
assertNotNull(a.getPreArticleId());
|
assertTrue(a.getPreArticle() != null || a.getNextArticle() != null);
|
||||||
assertNotNull(a.getPreArticleId());
|
|
||||||
assertNotNull(a.getNextArticleId());
|
|
||||||
assertNotNull(a.getNextArticleTitle());
|
|
||||||
assertNotNull(a.getReadingNumber());
|
assertNotNull(a.getReadingNumber());
|
||||||
// assertNotNull(a.getOpen());
|
|
||||||
assertNotNull(a.getOriginal());
|
assertNotNull(a.getOriginal());
|
||||||
assertNotNull(a.getPublishDateFormat());
|
assertNotNull(a.getPublishDateFormat());
|
||||||
assertNotNull(a.getCategory());
|
assertNotNull(a.getCategory());
|
||||||
assertNotNull(a.getTags());
|
assertNotNull(a.getTags());
|
||||||
assertNotNull(a.getAuthorName());
|
assertNotNull(a.getAuthor());
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -242,14 +234,12 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertNotNull(response.getResult());
|
assertNotNull(response.getResult());
|
||||||
// 判断pageInfo是否包装完全
|
// 判断pageInfo是否包装完全
|
||||||
JSONObject resultJson = JSONObject.fromObject(response.getResult());
|
JSONObject resultJson = JSONObject.fromObject(response.getResult());
|
||||||
PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
|
PageData<ArticleModel> pageData = (PageData<ArticleModel>) JSONObject.toBean(resultJson, PageData.class);
|
||||||
assertNotEquals(0, pageInfo.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
assertNotEquals(0, pageInfo.getStartRow());
|
assertEquals(1, pageData.getPageNum());
|
||||||
assertNotEquals(0, pageInfo.getEndRow());
|
assertEquals(5, pageData.getPageSize());
|
||||||
assertEquals(1, pageInfo.getPageNum());
|
|
||||||
assertEquals(5, pageInfo.getPageSize());
|
|
||||||
// 内容完整
|
// 内容完整
|
||||||
for (Object arc : pageInfo.getList()) {
|
for (Object arc : pageData.getList()) {
|
||||||
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
|
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
|
||||||
assertNotNull(a.getTitle());
|
assertNotNull(a.getTitle());
|
||||||
assertNotNull(a.getId());
|
assertNotNull(a.getId());
|
||||||
@@ -258,7 +248,9 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertNotNull(a.getPublishDateFormat());
|
assertNotNull(a.getPublishDateFormat());
|
||||||
assertNotNull(a.getCategory());
|
assertNotNull(a.getCategory());
|
||||||
assertNotNull(a.getTags());
|
assertNotNull(a.getTags());
|
||||||
assertNotNull(a.getAuthorName());
|
assertNotNull(a.getAuthor());
|
||||||
|
assertNull(a.getOpen());
|
||||||
|
assertNull(a.getMdContent());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -299,14 +291,12 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertEquals(SUCCESS.getCode(), adminLogin.getInt(Code));
|
assertEquals(SUCCESS.getCode(), adminLogin.getInt(Code));
|
||||||
assertNotNull(adminLogin.getString(Result));
|
assertNotNull(adminLogin.getString(Result));
|
||||||
// 判断pageInfo是否包装完全
|
// 判断pageInfo是否包装完全
|
||||||
PageInfo pageInfo = (PageInfo) JSONObject.toBean(adminLogin.getJSONObject(Result), PageInfo.class);
|
PageData<ArticleModel> pageData = (PageData<ArticleModel>) JSONObject.toBean(adminLogin.getJSONObject(Result), PageData.class);
|
||||||
assertNotEquals(0, pageInfo.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
assertNotEquals(0, pageInfo.getStartRow());
|
assertEquals(1, pageData.getPageNum());
|
||||||
assertNotEquals(0, pageInfo.getEndRow());
|
assertEquals(10, pageData.getPageSize());
|
||||||
assertEquals(1, pageInfo.getPageNum());
|
|
||||||
assertEquals(10, pageInfo.getPageSize());
|
|
||||||
// 内容完整
|
// 内容完整
|
||||||
for (Object arc : pageInfo.getList()) {
|
for (Object arc : pageData.getList()) {
|
||||||
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
|
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
|
||||||
assertNotNull(a.getTitle());
|
assertNotNull(a.getTitle());
|
||||||
assertNotNull(a.getId());
|
assertNotNull(a.getId());
|
||||||
@@ -314,6 +304,9 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
assertNotNull(a.getPublishDateFormat());
|
assertNotNull(a.getPublishDateFormat());
|
||||||
assertNotNull(a.getOpen());
|
assertNotNull(a.getOpen());
|
||||||
assertNotNull(a.getReadingNumber());
|
assertNotNull(a.getReadingNumber());
|
||||||
|
assertNotNull(a.getLikeCount());
|
||||||
|
assertNotNull(a.getDislikeCount());
|
||||||
|
assertNull(a.getMdContent());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -338,13 +331,11 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
.andDo(result -> {
|
.andDo(result -> {
|
||||||
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
|
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
|
||||||
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
|
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
|
||||||
PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class);
|
PageData<ArticleModel> pageData = (PageData<ArticleModel>) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class);
|
||||||
assertNotEquals(0, pageInfo.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
assertNotEquals(0, pageInfo.getStartRow());
|
assertEquals(1, pageData.getPageNum());
|
||||||
assertNotEquals(0, pageInfo.getEndRow());
|
assertEquals(10, pageData.getPageSize());
|
||||||
assertEquals(1, pageInfo.getPageNum());
|
for (Object arc : pageData.getList()) {
|
||||||
assertEquals(10, pageInfo.getPageSize());
|
|
||||||
for (Object arc : pageInfo.getList()) {
|
|
||||||
JSONObject jsonObject1 = JSONObject.fromObject(arc);
|
JSONObject jsonObject1 = JSONObject.fromObject(arc);
|
||||||
assertNotEquals(0, jsonObject1.getInt("id"));
|
assertNotEquals(0, jsonObject1.getInt("id"));
|
||||||
assertNotNull(jsonObject1.getString("title"));
|
assertNotNull(jsonObject1.getString("title"));
|
||||||
@@ -373,14 +364,12 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
.andDo(result -> {
|
.andDo(result -> {
|
||||||
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
|
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
|
||||||
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
|
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
|
||||||
PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class);
|
PageData<ArticleModel> pageData = (PageData<ArticleModel>) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class);
|
||||||
assertNotEquals(0, pageInfo.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
assertNotEquals(0, pageInfo.getStartRow());
|
assertEquals(1, pageData.getPageNum());
|
||||||
assertNotEquals(0, pageInfo.getEndRow());
|
assertEquals(10, pageData.getPageSize());
|
||||||
assertEquals(1, pageInfo.getPageNum());
|
|
||||||
assertEquals(10, pageInfo.getPageSize());
|
|
||||||
|
|
||||||
for (Object arc : pageInfo.getList()) {
|
for (Object arc : pageData.getList()) {
|
||||||
JSONObject jsonObject1 = JSONObject.fromObject(arc);
|
JSONObject jsonObject1 = JSONObject.fromObject(arc);
|
||||||
assertNotEquals(0, jsonObject1.getInt("id"));
|
assertNotEquals(0, jsonObject1.getInt("id"));
|
||||||
assertNotNull(jsonObject1.getString("title"));
|
assertNotNull(jsonObject1.getString("title"));
|
||||||
|
|||||||
@@ -162,6 +162,13 @@ public class ArticleMapperTest extends BaseTest {
|
|||||||
assertNotEquals(0, allByCategoryId.size());
|
assertNotEquals(0, allByCategoryId.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void findAllByCategoryIdAndOpen() {
|
||||||
|
List<Article> allByCategoryId = articleMapper.findAllByCategoryId(1);
|
||||||
|
assertNotEquals(0, allByCategoryId.size());
|
||||||
|
allByCategoryId.forEach(article -> assertTrue(article.getOpen()));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void findAll() {
|
public void findAll() {
|
||||||
List<Article> allByCategoryId = articleMapper.findAll();
|
List<Article> allByCategoryId = articleMapper.findAll();
|
||||||
@@ -173,6 +180,21 @@ public class ArticleMapperTest extends BaseTest {
|
|||||||
assertNotEquals(0, articleMapper.count());
|
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() {
|
private ArticleTag generateArticle() {
|
||||||
String randomText = UUID.randomUUID().toString();
|
String randomText = UUID.randomUUID().toString();
|
||||||
|
|
||||||
@@ -199,5 +221,4 @@ public class ArticleMapperTest extends BaseTest {
|
|||||||
|
|
||||||
return articleTag;
|
return articleTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -90,11 +90,27 @@ public class ArticleTagMapperTest extends BaseTest {
|
|||||||
articleTagMapper.insert(articleTag);
|
articleTagMapper.insert(articleTag);
|
||||||
|
|
||||||
List<ArticleTag> allByArticleId = articleTagMapper.findAllByArticleId(-1L);
|
List<ArticleTag> allByArticleId = articleTagMapper.findAllByArticleId(-1L);
|
||||||
assertEquals(6, allByArticleId.size());
|
assertTrue(allByArticleId.size() >= 6);
|
||||||
int lines = articleTagMapper.deleteMultiById(allByArticleId);
|
int lines = articleTagMapper.deleteMultiById(allByArticleId);
|
||||||
assertEquals(6, lines);
|
assertTrue(lines >= 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void findArticleByTag() {
|
||||||
|
ArticleTag articleTag = generateArticle();
|
||||||
|
List<ArticleTag> 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<ArticleTag> 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() {
|
private ArticleTag generateArticle() {
|
||||||
String randomText = UUID.randomUUID().toString();
|
String randomText = UUID.randomUUID().toString();
|
||||||
@@ -122,5 +138,4 @@ public class ArticleTagMapperTest extends BaseTest {
|
|||||||
|
|
||||||
return articleTag;
|
return articleTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user