本文最后更新于 2026年3月22日 下午
标签列表接口
标签列表接口需求
一篇文章可以对应多个标签
展示的标签对应的文章要是已发布的
代码实现
因为一篇文章中可能对应多个标签,所以要创建应该文章标签表
然后有自动化生成插件生成必要的类与接口,这里不做展示
编写服务类中的功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
@Service("tagService") public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {
@Autowired private ArticleService articleService;
@Autowired private ArticleTagMapper articleTagMapper;
@Override public ResponseResult getTagList() { LambdaQueryWrapper<Article> articleWrapper = new LambdaQueryWrapper<>(); articleWrapper.eq(Article::getStatus, SystemConstants.ARTICLE_STATUS_NORMAL); List<Article> articleList = articleService.list(articleWrapper);
Set<Long> articleIds = articleList.stream() .map(Article::getId) .collect(Collectors.toSet());
LambdaQueryWrapper<ArticleTag> articleTagWrapper = new LambdaQueryWrapper<>(); if (!articleIds.isEmpty()) { articleTagWrapper.in(ArticleTag::getArticleId, articleIds); } else { articleTagWrapper.eq(ArticleTag::getArticleId, -1L); } List<ArticleTag> articleTagList = articleTagMapper.selectList(articleTagWrapper);
Set<Long> tagIds = articleTagList.stream() .map(ArticleTag::getTagId) .collect(Collectors.toSet());
Map<Long, Long> tagArticleCountMap = articleTagList.stream() .collect(Collectors.groupingBy(ArticleTag::getTagId, Collectors.counting()));
LambdaQueryWrapper<Tag> tagWrapper = new LambdaQueryWrapper<>(); if (!tagIds.isEmpty()) { tagWrapper.in(Tag::getId, tagIds); } else { tagWrapper.eq(Tag::getId, -1L); } tagWrapper.eq(Tag::getDelFlag, SystemConstants.NOT_DELETED); List<Tag> tagList = list(tagWrapper);
List<TagVo> tagVoList = tagList.stream() .map(tag -> { TagVo tagVo = BeanCopyUtils.copyBean(tag, TagVo.class); tagVo.setArticleCount(tagArticleCountMap.getOrDefault(tag.getId(), 0L).intValue()); return tagVo; }) .collect(Collectors.toList());
return ResponseResult.okResult(tagVoList); } }
|
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2025 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/