Commit ebf70bd5 by 段启岩

优化根据tatId查询博客列表

parent 5d8a8249
......@@ -19,7 +19,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -170,7 +169,7 @@ public class BlogApi {
return Response.fieldError(result.getFieldError());
}
IPage<Blog> blogPage = blogService.getBlogsBytagId(pageForm.getPage(), pageForm.getSize(), tagId);
IPage<Blog> blogPage = blogService.getBlogPageBytagId(pageForm.getPage(), pageForm.getSize(), tagId);
PageVO<Blog> blogPageVO = new PageVO<>(blogPage);
return Response.success(blogPageVO);
}
......
......@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
/**
* <p>
* 博客表 Mapper 接口
......@@ -24,4 +26,11 @@ public interface BlogMapper extends BaseMapper<Blog> {
* @return
*/
IPage<Blog> selectPageWithTags(IPage<Blog> page, @Param(Constants.WRAPPER)QueryWrapper<?> queryWrapper);
/**
* 根据查询条件分页查询博客获取标签
* @param blogIds
* @return
*/
IPage<Blog> listByIdsWithTags(Collection<String> blogIds);
}
......@@ -44,4 +44,24 @@
${ew.customSqlSegment}
</if>
</select>
<select id="listByIdsWithTags" resultMap="blogWithTagsResultMap">
select
b.*,
t.tag_id,
t.tag_name,
t.tag_type,
t.create_time,
t.update_time
from blog b
left join blog_tag bt
on b.blog_id = bt.blog_id
left join tag t
on t.tag_id = bt.tag_id
where blog_id in
<foreach collection="blogIds" item="blogId" index="index" open="(" close=")" separator=",">
#{blogId}
</foreach>
</select>
</mapper>
......@@ -95,6 +95,6 @@ public interface IBlogService extends IService<Blog> {
* @param tagId
* @return
*/
IPage<Blog> getBlogsBytagId(Integer pageNumber , Integer pageSize , String tagId);
IPage<Blog> getBlogPageBytagId(Integer pageNumber , Integer pageSize , String tagId);
}
......@@ -473,15 +473,31 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
@Override
public IPage<Blog> getBlogsBytagId(Integer pageNumber, Integer pageSize, String tagId) {
IPage<Blog> blogPage = new Page<>(pageNumber , pageSize);
//获取当tagId下的所有blogId
List<String> blogIds = blogTagService.getBlogIdByTagId(pageNumber, pageSize, tagId)
.getRecords().stream().map(BlogTag::getBlogId).collect(Collectors.toList());
public IPage<Blog> getBlogPageBytagId(Integer pageNumber, Integer pageSize, String tagId) {
// 查询blogTagPage
IPage<BlogTag> page = new Page<>(pageNumber , pageSize);
QueryWrapper<BlogTag> blogTagQueryWrapper = new QueryWrapper<>();
blogTagQueryWrapper.eq("tag_id", tagId);
IPage<BlogTag> blogTagPage = blogTagService.page(page, blogTagQueryWrapper);
//批量查找博客
QueryWrapper<Blog> blogQueryWrapper = new QueryWrapper<>();
blogQueryWrapper.in("b.blog_id", blogIds);
return blogMapper.selectPageWithTags(blogPage,blogQueryWrapper);
// 根据blogTagPage构造博客分页
List<String> blogIds = blogTagPage.getRecords().stream()
.map(BlogTag::getBlogId)
.collect(Collectors.toList());
IPage<Blog> blogPage = new Page<>();
blogPage.setTotal(blogTagPage.getTotal());
blogPage.setCurrent(blogTagPage.getCurrent());
blogPage.setPages(blogTagPage.getPages());
blogPage.setSize(blogTagPage.getSize());
if (!CollectionUtils.isEmpty(blogIds)) {
blogPage.setRecords(List.of());
} else {
//批量查找博客
return blogMapper.listByIdsWithTags(blogIds);
}
return blogPage;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment