Explorar el Código

6.1 fourth commit

BophGuan hace 2 años
padre
commit
d8303fc7f4

+ 13 - 4
blog-api/pom.xml

@@ -10,6 +10,12 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>blog-api</artifactId>
+
+    <properties>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+
     <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
@@ -98,10 +104,13 @@
         <artifactId>joda-time</artifactId>
         <version>2.10.10</version>
     </dependency>
+     <dependency>
+         <groupId>io.jsonwebtoken</groupId>
+         <artifactId>jjwt</artifactId>
+         <version>0.9.1</version>
+     </dependency>
     </dependencies>
-    <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-    </properties>
+
+
 
 </project>

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

@@ -21,6 +21,36 @@ public class ArticleController {
      */
     @PostMapping
     public Result listArticle(@RequestBody PageParams pageParams){
+
         return articleService.listArticle(pageParams);
     }
+
+    /**
+     * 首页最热文章
+     * @return
+     */
+    @PostMapping("hot")
+    public Result hotArticle(){
+        int limit = 5;
+        return articleService.hotArticle(limit);
+    }
+
+    /**
+     * 首页最新文章
+     * @return
+     */
+    @PostMapping("new")
+    public Result newsArticle(){
+        int limit = 5;
+        return articleService.newsArticle(limit);
+    }
+
+    /**
+     * 首页最新文章
+     * @return
+     */
+    @PostMapping("listArchives")
+    public Result listArchives(){
+        return articleService.listArchives();
+    }
 }

+ 4 - 0
blog-api/src/main/java/com/mszlu/blog/dao/mapper/ArticleMapper.java

@@ -1,7 +1,11 @@
 package com.mszlu.blog.dao.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mszlu.blog.dao.dos.Archives;
 import com.mszlu.blog.dao.pojo.Article;
 
+import java.util.List;
+
 public interface ArticleMapper extends BaseMapper<Article> {
+    List<Archives> listArchives();
 }

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

@@ -13,5 +13,12 @@ public interface TagMapper extends BaseMapper<Tag> {
      */
     List<Tag> findTagsByArticleId(Long articleId);
 
+    /**
+     * 查询最热 标签前n条
+     * @param limit
+     * @return
+     */
     List<Long> findHostTagIds(int limit);
+
+    List<Tag> findTagsByTagIds(List<Long> tagIds);
 }

+ 20 - 0
blog-api/src/main/java/com/mszlu/blog/service/ArticleService.java

@@ -10,4 +10,24 @@ public interface ArticleService {
      * @return
      */
     Result listArticle(PageParams pageParams);
+
+    /**
+     * 最热文章
+     * @param limit
+     * @return
+     */
+    Result hotArticle(int limit);
+
+    /**
+     * 最新文章
+     * @param limit
+     * @return
+     */
+    Result newsArticle(int limit);
+
+    /**
+     * 文章归档
+     * @return
+     */
+    Result listArchives();
 }

+ 31 - 0
blog-api/src/main/java/com/mszlu/blog/service/impl/ArticleServiceImpl.java

@@ -2,6 +2,7 @@ package com.mszlu.blog.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mszlu.blog.dao.dos.Archives;
 import com.mszlu.blog.dao.mapper.ArticleMapper;
 import com.mszlu.blog.dao.pojo.Article;
 import com.mszlu.blog.service.ArticleService;
@@ -43,6 +44,36 @@ public class ArticleServiceImpl implements ArticleService {
         return Result.success(articleVoList);
     }
 
+    @Override
+    public Result hotArticle(int limit) {
+        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.orderByDesc(Article::getViewCounts);
+        queryWrapper.select(Article::getId,Article::getTitle);
+        queryWrapper.last("limit"+limit);
+        //select id.title from article order by view_counts desc limit 5
+        List<Article> articles = articleMapper.selectList(queryWrapper);
+
+        return Result.success(copyList(articles,false,false));
+    }
+
+    @Override
+    public Result newsArticle(int limit) {
+        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.orderByDesc(Article::getCreateDate);
+        queryWrapper.select(Article::getId,Article::getTitle);
+        queryWrapper.last("limit "+limit);
+        //select id.title from article order by create_data desc limit 5
+        List<Article> articles = articleMapper.selectList(queryWrapper);
+
+        return Result.success(copyList(articles,false,false));
+    }
+
+    @Override
+    public Result listArchives() {
+        List<Archives> archivesList = articleMapper.listArchives();
+        return Result.success(archivesList);
+    }
+
     private List<ArticleVo> copyList(List<Article> records,boolean isTag,boolean isAuthor) {
         List<ArticleVo> articleVoList = new ArrayList<>();
         for (Article record : records){

+ 9 - 1
blog-api/src/main/java/com/mszlu/blog/service/impl/TagServiceImpl.java

@@ -8,8 +8,10 @@ import com.mszlu.blog.vo.TagVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 @Service
@@ -42,6 +44,12 @@ public class TagServiceImpl implements TagService {
          * 2. 查询 根据tag_id 分组 计数,从大到小 排列取前limit个
          */
         List<Long> tagIds = tagMapper.findHostTagIds(limit);
-        return null;
+        if (CollectionUtils.isEmpty(tagIds)){
+            return Result.success(Collections.emptyList());
+        }
+        //需求的是 tagId 和tagName Tag对象
+        //select * from tag where id in (1,2,3,4)
+        List<Tag> tagList = tagMapper.findTagsByTagIds(tagIds);
+        return Result.success(tagList);
     }
 }

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

@@ -13,10 +13,10 @@ public class Result {
 
     private String msg;
 
-    private Object date;
+    private Object data;
 
-    public static Result success(Object date){
-        return new Result(true,200,"success",date);
+    public static Result success(Object data){
+        return new Result(true,200,"success",data);
     }
 
     public static Result fail(int code,String msg){

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

@@ -10,4 +10,15 @@
         where id in
         (select tag_id from ms_article_tag where article_id=#{articleId})
     </select>
+    <!--List<Long> findHostTagIds(int limit);-->
+    <select id="findHostTagIds" parameterType="int" resultType="java.lang.Long">
+        SELECT tag_id FROM `ms_article_tag` GROUP BY tag_id order by count(*) desc limit ${limit}
+    </select>
+    <select id="findTagsByTagIds" parameterType="list" resultType="com.mszlu.blog.dao.pojo.Tag">
+        select id,tag_name as tagName from ms_tag
+        where id in
+        <foreach collection="tagIds" item="tagId" separator="," open="(" close=")">
+            #{tagId}
+        </foreach>
+    </select>
 </mapper>