本文最后更新于 2026年4月19日 晚上
删除标签接口的实现
删除标签接口的需求
收集所有文章的标签信息
检查每个标签下是否有文章
通过 文章标签表 查出该标签中是否有文章
获取关联信息
如果有 不允许删除 并返回错误提示
如果没有则可以删除
代码实现
在 AdminTagServiceImpl 中实现方法
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
|
@Override public ResponseResult deleteTag(Long[] ids) { List<Long> tagIdList =List.of(ids);
StringBuilder errorMsg = new StringBuilder();
for (Long tagId : tagIdList) { LambdaQueryWrapper<ArticleTag> articleTagQueryWrapper = new LambdaQueryWrapper<>(); articleTagQueryWrapper.eq(ArticleTag::getTagId, tagId); List<ArticleTag> articleTags = articleTagMapper.selectList(articleTagQueryWrapper);
if (!articleTags.isEmpty()) { List<Long> articleIds = articleTags.stream() .map(ArticleTag::getArticleId) .collect(Collectors.toList());
LambdaQueryWrapper<Article> articleQueryWrapper = new LambdaQueryWrapper<>(); articleQueryWrapper.in(Article::getId, articleIds) .eq(Article::getDelFlag, SystemConstants.NOT_DELETED); long articleCount = articleService.count(articleQueryWrapper);
if (articleCount > 0) { Tag tag = tagService.getById(tagId); String tagName = tag != null ? tag.getName() : "ID:" + tagId; if (!errorMsg.isEmpty()) { errorMsg.append("; "); } errorMsg.append("【").append(tagName).append("】下存在 ").append(articleCount).append(" 篇文章"); } } }
if (!errorMsg.isEmpty()) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, errorMsg.toString() + ",无法删除"); }
tagService.removeByIds(tagIdList);
return ResponseResult.okResult(); }
|
测试接口删除多个标签时其中有标签含有文章会失败
删除标签测试成功
删除标签测试成功
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/