diff --git a/src/main/java/cn/celess/blog/controller/TagController.java b/src/main/java/cn/celess/blog/controller/TagController.java index 4df2da2..c95ed1b 100644 --- a/src/main/java/cn/celess/blog/controller/TagController.java +++ b/src/main/java/cn/celess/blog/controller/TagController.java @@ -38,16 +38,6 @@ public class TagController { return ResponseUtil.success(tagService.update(id, name)); } - @GetMapping("/tag/id/{id}") - public Response retrieveOneById(@PathVariable("id") long id) { - return ResponseUtil.success(tagService.retrieveOneById(id)); - } - - @GetMapping("/tag/name/{name}") - public Response retrieveOneByName(@PathVariable("name") String name) { - return ResponseUtil.success(tagService.retrieveOneByName(name)); - } - @GetMapping("/tags") public Response getPage(@RequestParam(required = false, defaultValue = "10", value = "count") int count, @RequestParam(required = false, defaultValue = "1", value = "page") int page) { @@ -61,7 +51,7 @@ public class TagController { for (TagModel t : all) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", t.getName()); - jsonObject.put("size", t.getArticles() == null ? 0 : t.getArticles().size()); + jsonObject.put("size", t.getArticles().size()); nameAndCount.add(jsonObject); } return ResponseUtil.success(nameAndCount); diff --git a/src/main/java/cn/celess/blog/entity/model/CategoryModel.java b/src/main/java/cn/celess/blog/entity/model/CategoryModel.java index e99d57c..35c74e4 100644 --- a/src/main/java/cn/celess/blog/entity/model/CategoryModel.java +++ b/src/main/java/cn/celess/blog/entity/model/CategoryModel.java @@ -20,5 +20,5 @@ public class CategoryModel { private String name; - private List
articles; + private List articles; } diff --git a/src/main/java/cn/celess/blog/entity/model/TagModel.java b/src/main/java/cn/celess/blog/entity/model/TagModel.java index a4111c1..6a605b6 100644 --- a/src/main/java/cn/celess/blog/entity/model/TagModel.java +++ b/src/main/java/cn/celess/blog/entity/model/TagModel.java @@ -1,11 +1,9 @@ package cn.celess.blog.entity.model; -import cn.celess.blog.entity.Tag; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.ArrayList; import java.util.List; /** @@ -21,21 +19,6 @@ public class TagModel { private String name; - private List articles; + private List articles; - public TagModel(Tag tag) { - this.id = tag.getId(); - this.name = tag.getName(); - if (tag.getArticles() == null || tag.getArticles().length() == 0) { - articles = null; - } else { - articles = new ArrayList<>(); - for (String s : tag.getArticles().split(",")) { - if ("".equals(s)) { - return; - } - articles.add(Integer.parseInt(s)); - } - } - } } diff --git a/src/main/java/cn/celess/blog/entity/request/ArticleReq.java b/src/main/java/cn/celess/blog/entity/request/ArticleReq.java index ae30c2c..e1312b4 100644 --- a/src/main/java/cn/celess/blog/entity/request/ArticleReq.java +++ b/src/main/java/cn/celess/blog/entity/request/ArticleReq.java @@ -11,7 +11,7 @@ public class ArticleReq { private Long id; private String title; private String mdContent; - private String tags; + private String[] tags; private Boolean type; private String url; private String category; diff --git a/src/main/java/cn/celess/blog/service/TagService.java b/src/main/java/cn/celess/blog/service/TagService.java index 73c4a04..ce7df5d 100644 --- a/src/main/java/cn/celess/blog/service/TagService.java +++ b/src/main/java/cn/celess/blog/service/TagService.java @@ -1,6 +1,7 @@ package cn.celess.blog.service; import cn.celess.blog.entity.Tag; +import cn.celess.blog.entity.model.PageData; import cn.celess.blog.entity.model.TagModel; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; @@ -21,15 +22,6 @@ public interface TagService { */ TagModel create(String name); - /** - * 新增数据 - * - * @param tag tag对象 - * @return 新增后的数据 - */ - - TagModel create(Tag tag); - /** * 删除数据 * @@ -47,23 +39,6 @@ public interface TagService { */ TagModel update(Long id, String name); - /** - * 查询单个标签信息 - * - * @param tagId id - * @return 标签的数据 - */ - TagModel retrieveOneById(long tagId); - - /** - * 通过name查询标签的信息 - * - * @param name tag的名称 - * @return 标签数据 - */ - TagModel retrieveOneByName(String name); - - /** * 分页获取标签数据 * @@ -71,7 +46,7 @@ public interface TagService { * @param page 数据页 * @return 分页数据 */ - PageInfo retrievePage(int page, int count); + PageData retrievePage(int page, int count); /** * 获取全部标签数据 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 f3e575d..656187b 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java @@ -121,7 +121,7 @@ public class ArticleServiceImpl implements ArticleService { Article articleFromDb = articleMapper.findArticleById(article.getId()); ArticleModel articleModel = ModalTrans.article(articleFromDb); - articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(article.getId()))); + articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(article.getId()), true)); return articleModel; } @@ -281,8 +281,7 @@ public class ArticleServiceImpl implements ArticleService { PageData pageData = new PageData(new PageInfo
(articleList)); List articleModelList = new ArrayList<>(); articleList.forEach(article -> { - ArticleModel articleModel = ModalTrans.article(article); - articleModel.setMdContent(null); + ArticleModel articleModel = ModalTrans.article(article, true); articleModelList.add(articleModel); }); pageData.setList(articleModelList); @@ -298,10 +297,8 @@ public class ArticleServiceImpl implements ArticleService { List articleModelList = new ArrayList<>(); articleList.forEach(article -> { - ArticleModel model = ModalTrans.article(article); + ArticleModel model = ModalTrans.article(article, true); setPreAndNextArticle(model); - model.setOpen(null); - model.setMdContent(null); articleModelList.add(model); }); @@ -321,10 +318,8 @@ public class ArticleServiceImpl implements ArticleService { List modelList = new ArrayList<>(); open.forEach(article -> { - ArticleModel model = ModalTrans.article(article); - model.setMdContent(null); + ArticleModel model = ModalTrans.article(article, true); model.setTags(null); - model.setOpen(null); setPreAndNextArticle(model); }); return new PageData(new PageInfo
(open), modelList); @@ -340,9 +335,7 @@ public class ArticleServiceImpl implements ArticleService { List articleByTag = articleTagMapper.findArticleByTagAndOpen(tag.getId()); List modelList = new ArrayList<>(); articleByTag.forEach(articleTag -> { - ArticleModel model = ModalTrans.article(articleTag.getArticle()); - model.setMdContent(null); - model.setOpen(null); + ArticleModel model = ModalTrans.article(articleTag.getArticle(), true); }); return new PageData(new PageInfo(articleByTag), modelList); } @@ -351,7 +344,7 @@ public class ArticleServiceImpl implements ArticleService { if (articleModel == null) { return; } - articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(articleModel.getId()))); - articleModel.setNextArticle(ModalTrans.article(articleMapper.getNextArticle(articleModel.getId()))); + articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(articleModel.getId()), true)); + articleModel.setNextArticle(ModalTrans.article(articleMapper.getNextArticle(articleModel.getId()), true)); } } diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java index 0103ce1..f539932 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java @@ -2,16 +2,23 @@ package cn.celess.blog.service.serviceimpl; import cn.celess.blog.enmu.ResponseEnum; import cn.celess.blog.entity.Article; +import cn.celess.blog.entity.ArticleTag; import cn.celess.blog.entity.Tag; +import cn.celess.blog.entity.TagCategory; +import cn.celess.blog.entity.model.ArticleModel; +import cn.celess.blog.entity.model.PageData; import cn.celess.blog.entity.model.TagModel; import cn.celess.blog.exception.MyException; import cn.celess.blog.mapper.ArticleMapper; +import cn.celess.blog.mapper.ArticleTagMapper; import cn.celess.blog.mapper.TagMapper; import cn.celess.blog.service.TagService; +import cn.celess.blog.util.ModalTrans; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; @@ -29,6 +36,8 @@ public class TagServiceImpl implements TagService { HttpServletRequest request; @Autowired ArticleMapper articleMapper; + @Autowired + ArticleTagMapper articleTagMapper; @Override public TagModel create(String name) { @@ -39,40 +48,19 @@ public class TagServiceImpl implements TagService { Tag tag = new Tag(); tag.setName(name); tagMapper.insert(tag); - return new TagModel(tag); - } - - @Override - public TagModel create(Tag tag) { - if (tag == null) { - throw new MyException(ResponseEnum.PARAMETERS_ERROR); - } - tagMapper.insert(tag); - return new TagModel(tag); + return ModalTrans.tag(tag); } @Override + @Transactional(rollbackFor = Exception.class) public boolean delete(long tagId) { Tag tag = tagMapper.findTagById(tagId); if (tag == null) { throw new MyException(ResponseEnum.TAG_NOT_EXIST); } - if (tag.getArticles() == null) { - return tagMapper.delete(tagId) == 1; - } - String[] articleArray = tag.getArticles().split(","); - for (int i = 0; i < articleArray.length; i++) { - if (articleArray[i] == null || "".equals(articleArray[i])) { - continue; - } - long articleID = Long.parseLong(articleArray[i]); - Article article = articleMapper.findArticleById(articleID); - if (article == null) { - continue; - } - article.setTagsId(article.getTagsId().replace(tagId + ",", "")); - articleMapper.update(article); - } + List articleByTag = articleTagMapper.findArticleByTag(tagId); + // 删除文章 + articleByTag.forEach(articleTag -> articleMapper.delete(articleTag.getArticle().getId())); return tagMapper.delete(tagId) == 1; } @@ -82,47 +70,33 @@ public class TagServiceImpl implements TagService { if (id == null) { throw new MyException(ResponseEnum.PARAMETERS_ERROR.getCode(), "缺少ID"); } - Tag tagFromDB = tagMapper.findTagById(id); - tagFromDB.setName(name); - - tagMapper.update(tagFromDB); - return new TagModel(tagFromDB); + Tag tag = tagMapper.findTagById(id); + tag.setName(name); + tagMapper.update(tag); + return ModalTrans.tag(tag); } @Override - public TagModel retrieveOneById(long tagId) { - Tag tag = tagMapper.findTagById(tagId); - if (tag == null) { - throw new MyException(ResponseEnum.TAG_NOT_EXIST); - } - return new TagModel(tag); - } - - @Override - public TagModel retrieveOneByName(String name) { - Tag tag = tagMapper.findTagByName(name); - if (tag == null) { - throw new MyException(ResponseEnum.TAG_NOT_EXIST); - } - return new TagModel(tag); - } - - @Override - public PageInfo retrievePage(int page, int count) { + public PageData retrievePage(int page, int count) { PageHelper.startPage(page, count); List tagList = tagMapper.findAll(); - PageInfo pageInfo = new PageInfo(tagList); - List list = new ArrayList<>(); - tagList.forEach(e -> list.add(new TagModel(e))); - pageInfo.setList(list); - return pageInfo; + List modelList = new ArrayList<>(); + tagList.forEach(tag -> modelList.add(ModalTrans.tag(tag))); + return new PageData(new PageInfo(tagList), modelList); } @Override public List findAll() { List list = new ArrayList<>(); - tagMapper.findAll().forEach(e -> list.add(new TagModel(e))); + tagMapper.findAll().forEach(e -> { + TagModel model = ModalTrans.tag(e); + List articleByTagAndOpen = articleTagMapper.findArticleByTagAndOpen(e.getId()); + List articleModelList = new ArrayList<>(); + articleByTagAndOpen.forEach(articleTag -> articleModelList.add(ModalTrans.article(articleTag.getArticle(), true))); + model.setArticles(articleModelList); + list.add(model); + }); return list; } } diff --git a/src/main/java/cn/celess/blog/util/ModalTrans.java b/src/main/java/cn/celess/blog/util/ModalTrans.java index e518da6..306e12a 100644 --- a/src/main/java/cn/celess/blog/util/ModalTrans.java +++ b/src/main/java/cn/celess/blog/util/ModalTrans.java @@ -2,9 +2,11 @@ package cn.celess.blog.util; import cn.celess.blog.entity.Article; import cn.celess.blog.entity.Category; +import cn.celess.blog.entity.Tag; import cn.celess.blog.entity.User; import cn.celess.blog.entity.model.ArticleModel; import cn.celess.blog.entity.model.CategoryModel; +import cn.celess.blog.entity.model.TagModel; import cn.celess.blog.entity.model.UserModel; import org.springframework.beans.BeanUtils; @@ -30,6 +32,17 @@ public class ModalTrans { } + public static ArticleModel article(Article article, boolean noMdContent) { + ArticleModel article1 = article(article); + if (!noMdContent) { + return article1; + } + article1.setMdContent(null); + article1.setOpen(null); + return article1; + } + + public static UserModel user(User user) { UserModel userModel = new UserModel(); BeanUtils.copyProperties(user, userModel); @@ -41,4 +54,11 @@ public class ModalTrans { BeanUtils.copyProperties(category, model); return model; } + + + public static TagModel tag(Tag tag) { + TagModel model = new TagModel(); + BeanUtils.copyProperties(tag, model); + return model; + } } diff --git a/src/main/resources/mapper/tagMapper.xml b/src/main/resources/mapper/tagMapper.xml index 48e6359..9efe1a1 100644 --- a/src/main/resources/mapper/tagMapper.xml +++ b/src/main/resources/mapper/tagMapper.xml @@ -54,7 +54,7 @@