导航
其实之前已经实现过文章和标签分类了
但是这个对应的是导航栏的,多显示个图片
所以新增两个这个请求
文章分类
把之前的CategoryVo加个描述属性
写过这个copyList,直接用就行
标签分类
和上面的分类查询差不多
不多解释了
分类文章列表
点击这个后
查询分类
这个功能简单,点击对应图标上面显示对应的东西需要根据id查询分类数据
根据分类查询文章列表
因为前端是用的listArticle那个映射来进行数据传输的
所以我们要改一下文章列表的逻辑
在PageParam新增CategoryId和TagId(下一个功能)标签
标签文章列表
通过点击这个标签可以显示对应所有文章
查询标签信息
更改listArticle的逻辑
因为我们的tag和article多对多
所以需要先根据tag找到对应的文章id放到一个集合中
然后将这个看我们的ArticleId是否在集合中,只查询集合中的
if (articleIdList.size() > 0){
articleLambdaQueryWrapper.in(Article::getId,articleIdList);
}
ok
文章归档
就是通过点击左边的就能找到我们对于年月发布的文章
还是文章列表接口里面加逻辑
接口
该一下请求分页参数
注释掉之前的listArticle不用mp了,直接用myabtis原生操作
@Overridepublic Result listArticle(PageParams pageParams) {Page<Article> page = new Page<>(pageParams.getPage(),pageParams.getPageSize());IPage<Article> articleIPage = this.articleMapper.listArticle(page,pageParams.getCategoryId(),pageParams.getTagId(),pageParams.getYear(),pageParams.getMonth());return Result.success(copyList(articleIPage.getRecords(),true,true,false,false));}
写一下对应的articleMapper.xml
写一下对应映射,不写的话也可以开启驼峰命名即可
<?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.ArticleMapper"><resultMap id="articleMap" type="com.mszlu.blog.dao.pojo.Article"><id column="id" property="id" /><result column="author_id" property="authorId"/><result column="comment_counts" property="commentCounts"/><result column="create_date" property="createDate"/><result column="summary" property="summary"/><result column="title" property="title"/><result column="view_counts" property="viewCounts"/><result column="weight" property="weight"/><result column="body_id" property="bodyId"/><result column="category_id" property="categoryId"/></resultMap><select id="listArticle" resultMap="articleMap">select * from ms_article<where>1 = 1<if test="categoryId != null">and category_id = ##{categoryId}</if><if test="year != null and year.length>0 and month != null and month.length>0">and ( FROM_UNIXTIME(create_date/1000,'%Y') = ##{year} and FROM_UNIXTIME(create_date/1000,'%m') = ##{month} )</if><if test="tagId != null">and id in (select article_id from ms_article_tag where tag_id=##{tagId})</if></where>order by create_date desc</select>
</mapper>
效果展示