『博客开发日记-后台』之删除分类接口的实现

本文最后更新于 2026年4月19日 下午

删除分类接口的实现


删除分类接口的需求

收集所有文章的分类信息

检查每个分类下是否有文章

根据文章表查出该分类中是否有文章

如果有 不允许删除 并返回错误提示

如果没有则可以删除


代码实现

在 AdminCategoryServiceImpl 中实现方法

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

//批量删除分类(逻辑删除)
@Override
public ResponseResult deleteCategory(Long[] ids)
{
//获取分类id列表
List<Long> idList = List.of(ids);

//收集所有有文章的分类信息
StringBuilder errorMsg = new StringBuilder();

//检查每个分类下是否有文章
for (Long categoryId : idList) {
LambdaQueryWrapper<Article> articleQueryWrapper = new LambdaQueryWrapper<>();
articleQueryWrapper.eq(Article::getCategoryId, categoryId)
.eq(Article::getDelFlag, SystemConstants.NOT_DELETED);

long articleCount = articleService.count(articleQueryWrapper);

if (articleCount > 0) {
//如果该分类下有文章,收集错误信息
Category category = categoryService.getById(categoryId);
String categoryName = category != null ? category.getName() : "ID:" + categoryId;
if (!errorMsg.isEmpty()) {
errorMsg.append("; ");
}
errorMsg.append("【").append(categoryName).append("】下存在 ").append(articleCount).append(" 篇文章");
}
}

//如果有分类下存在文章,返回所有错误信息
if (!errorMsg.isEmpty()) {
return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, errorMsg.toString() + ",无法删除");
}

//根据分类id列表删除分类
categoryService.removeByIds(idList);

return ResponseResult.okResult();
}

最后测试接口成功


在数据库中 del_flag 字段从 0 > 1




PS:该系列只做为作者学习开发项目做的笔记用

不一定符合读者来学习,仅供参考


预告

后续会记录博客的开发过程

每次学习会做一份笔记来进行发表

“一花一世界,一叶一菩提”


版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/


『博客开发日记-后台』之删除分类接口的实现
http://example.com/2026/04/17/『博客开发日记-后台』之删除分类接口的实现/
作者
云梦泽
发布于
2026年4月17日
更新于
2026年4月19日
许可协议