BophGuan 2 роки тому
батько
коміт
ee97743552

+ 1 - 1
blog-api/src/main/java/com/mszlu/blog/controller/ArticleController.java

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 //json数据进行交互
 @RestController
-@RequestMapping("articles")
+@RequestMapping("/articles")
 public class ArticleController {
     @Autowired
     private ArticleService articleService;

+ 21 - 0
blog-api/src/main/java/com/mszlu/blog/controller/TagsController.java

@@ -0,0 +1,21 @@
+package com.mszlu.blog.controller;
+
+import com.mszlu.blog.service.TagService;
+import com.mszlu.blog.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("tags")
+public class TagsController {
+    @Autowired
+    private TagService tagService;
+    //  /tags/hot
+    @GetMapping("hot")
+    public Result hot(){
+        int limit = 6;
+        return tagService.host(limit);
+    }
+}

+ 10 - 0
blog-api/src/main/java/com/mszlu/blog/dao/mapper/TagMapper.java

@@ -3,5 +3,15 @@ package com.mszlu.blog.dao.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mszlu.blog.dao.pojo.Tag;
 
+import java.util.List;
+
 public interface TagMapper extends BaseMapper<Tag> {
+    /**
+     * 根据文章id查询标签列表
+     * @param articleId
+     * @return
+     */
+    List<Tag> findTagsByArticleId(Long articleId);
+
+    List<Long> findHostTagIds(int limit);
 }

+ 7 - 0
blog-api/src/main/java/com/mszlu/blog/service/SysUserService.java

@@ -0,0 +1,7 @@
+package com.mszlu.blog.service;
+
+import com.mszlu.blog.dao.pojo.SysUser;
+
+public interface SysUserService {
+    SysUser findUserById(Long id);
+}

+ 13 - 0
blog-api/src/main/java/com/mszlu/blog/service/TagService.java

@@ -0,0 +1,13 @@
+package com.mszlu.blog.service;
+
+import com.mszlu.blog.vo.Result;
+import com.mszlu.blog.vo.TagVo;
+
+import java.util.List;
+
+public interface TagService {
+    List<TagVo> findTagsByArticleId(Long articleId);
+
+    Result host(int limit);
+
+}

+ 19 - 5
blog-api/src/main/java/com/mszlu/blog/service/impl/ArticleServiceImpl.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mszlu.blog.dao.mapper.ArticleMapper;
 import com.mszlu.blog.dao.pojo.Article;
 import com.mszlu.blog.service.ArticleService;
+import com.mszlu.blog.service.SysUserService;
+import com.mszlu.blog.service.TagService;
 import com.mszlu.blog.vo.ArticleVo;
 import com.mszlu.blog.vo.Result;
 import com.mszlu.blog.vo.params.PageParams;
@@ -20,6 +22,10 @@ import java.util.List;
 public class ArticleServiceImpl implements ArticleService {
     @Autowired
     private ArticleMapper articleMapper;
+    @Autowired
+    private TagService tagService;
+    @Autowired
+    private SysUserService sysUserService;
     @Override
     public Result listArticle(PageParams pageParams) {
         /**
@@ -33,22 +39,30 @@ public class ArticleServiceImpl implements ArticleService {
         queryWrapper.orderByDesc(Article::getWeight,Article::getCreateDate);
         Page<Article> articlePage = articleMapper.selectPage(page, queryWrapper);
         List<Article> records = articlePage.getRecords();
-        List<ArticleVo> articleVoList = copyList(records);
+        List<ArticleVo> articleVoList = copyList(records,true,true);
         return Result.success(articleVoList);
     }
 
-    private List<ArticleVo> copyList(List<Article> records) {
+    private List<ArticleVo> copyList(List<Article> records,boolean isTag,boolean isAuthor) {
         List<ArticleVo> articleVoList = new ArrayList<>();
         for (Article record : records){
-            articleVoList.add(copy(record));
+            articleVoList.add(copy(record,isTag,isAuthor));
         }
-        return null;
+        return articleVoList;
     }
 
-    private ArticleVo copy(Article article){
+    private ArticleVo copy(Article article,boolean isTag,boolean isAuthor){
         ArticleVo articleVo = new ArticleVo();
         BeanUtils.copyProperties(article,articleVo);
         articleVo.setCreateDate(new DateTime(article.getCreateDate()).toString("yyyy-MM-dd HH:mm"));
+        if (isTag){
+            Long articleId = article.getId();
+            articleVo.setTags(tagService.findTagsByArticleId(articleId));
+        }
+        if (isAuthor){
+            Long authorId = article.getAuthorId();
+            articleVo.setAuthor(sysUserService.findUserById(authorId).getNickname());
+        }
         return articleVo;
     }
 }

+ 22 - 0
blog-api/src/main/java/com/mszlu/blog/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,22 @@
+package com.mszlu.blog.service.impl;
+
+import com.mszlu.blog.dao.mapper.SysUserMapper;
+import com.mszlu.blog.dao.pojo.SysUser;
+import com.mszlu.blog.service.SysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysUserServiceImpl implements SysUserService {
+    @Autowired
+    private SysUserMapper sysUserMapper;
+    @Override
+    public SysUser findUserById(Long id){
+        SysUser sysUser = sysUserMapper.selectById(id);
+        if (sysUser == null){
+            sysUser = new SysUser();
+            sysUser.setNickname("mszl");
+        }
+        return sysUser;
+    }
+}

+ 47 - 0
blog-api/src/main/java/com/mszlu/blog/service/impl/TagServiceImpl.java

@@ -0,0 +1,47 @@
+package com.mszlu.blog.service.impl;
+
+import com.mszlu.blog.dao.mapper.TagMapper;
+import com.mszlu.blog.dao.pojo.Tag;
+import com.mszlu.blog.service.TagService;
+import com.mszlu.blog.vo.Result;
+import com.mszlu.blog.vo.TagVo;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class TagServiceImpl implements TagService {
+    @Autowired
+    private TagMapper tagMapper;
+    public TagVo copy(Tag tag){
+        TagVo tagVo = new TagVo();
+        BeanUtils.copyProperties(tag,tagVo);
+        return tagVo;
+    }
+    public List<TagVo> copyList(List<Tag> tagList){
+        List<TagVo> tagVoList = new ArrayList<>();
+        for (Tag tag : tagList) {
+            tagVoList.add(copy(tag));
+        }
+        return tagVoList;
+    }
+    @Override
+    public List<TagVo> findTagsByArticleId(Long articleId) {
+        //mybatisplus无法进行多表查询
+        List<Tag> tags = tagMapper.findTagsByArticleId(articleId);
+        return copyList(tags);
+    }
+
+    @Override
+    public Result host(int limit) {
+        /**
+         * 1.标签所拥有的文章数量最多 最热标签
+         * 2. 查询 根据tag_id 分组 计数,从大到小 排列取前limit个
+         */
+        List<Long> tagIds = tagMapper.findHostTagIds(limit);
+        return null;
+    }
+}

+ 0 - 4
blog-api/src/main/java/com/mszlu/blog/vo/ArticleVo.java

@@ -1,9 +1,5 @@
 package com.mszlu.blog.vo;
 
-import com.mszlu.blog.dao.pojo.ArticleBody;
-import com.mszlu.blog.dao.pojo.Category;
-import com.mszlu.blog.dao.pojo.SysUser;
-import com.mszlu.blog.dao.pojo.Tag;
 import lombok.Data;
 
 import java.util.List;

+ 1 - 0
blog-api/src/main/java/com/mszlu/blog/vo/Result.java

@@ -20,6 +20,7 @@ public class Result {
     }
 
     public static Result fail(int code,String msg){
+
         return new Result(false,code,msg,null);
     }
 }

+ 1 - 1
blog-api/src/main/resources/application.properties

@@ -4,7 +4,7 @@ spring.application.name=mzslu_blog
 #sql??
 spring.datasource.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8&serverTimeZone=UTC
 spring.datasource.username=root
-spring.datasource.password=root
+spring.datasource.password=123456
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 
 #mybatis-plus

+ 13 - 0
blog-api/src/main/resources/com/mszlu/blog/dao/mapper/TagMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--MyBatis配置文件-->
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.mszlu.blog.dao.mapper.TagMapper">
+
+    <!--List<Tag> findTagsByArticleId(Long articleId);-->
+    <select id="findTagsByArticleId" parameterType="long" resultType="com.mszlu.blog.dao.pojo.Tag">
+        select id,avatar,tag_name as tagName from ms_tag
+        where id in
+        (select tag_id from ms_article_tag where article_id=#{articleId})
+    </select>
+</mapper>