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

本文最后更新于 2026年5月3日 下午

删除评论接口的实现


删除评论接口的需求

根据传入的评论id对评论进行逻辑删除

如果是根评论则需要删除其所有子评论


代码实现

在 AdminCommentServiceImpl 中实现方法

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

//删除评论(逻辑删除)
@Override
public ResponseResult deleteComment(Long[] ids)
{
// 参数校验
if (ids == null || ids.length == 0) {
return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "请选择要删除的评论");
}

//获取评论id列表
List<Long> idList = List.of(ids);

//查询要删除的评论,找出所有根评论
List<Comment> commentsToDelete = commentMapper.selectBatchIds(idList);
if (commentsToDelete.isEmpty()) {
return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "评论不存在");
}

//收集所有需要删除的评论ID(包括子评论)
List<Long> allIdsToDelete = new ArrayList<>(idList);

for (Comment comment : commentsToDelete)
{
//如果是根评论则需要删除其所有子评论
if (comment.getRootId() == null || comment.getRootId() == -1)
{
LambdaQueryWrapper<Comment> childWrapper = new LambdaQueryWrapper<>();
childWrapper.eq(Comment::getRootId, comment.getId());
List<Comment> childComments = commentMapper.selectList(childWrapper);

//添加子评论ID到删除列表
List<Long> childIds = childComments.stream()
.map(Comment::getId)
.collect(Collectors.toList());
allIdsToDelete.addAll(childIds);
}
}

//删除评论
int deleteCount = commentMapper.deleteBatchIds(allIdsToDelete);

if (deleteCount > 0) {
return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS.getCode(),
"成功删除 " + deleteCount + " 条评论");
} else {
return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "删除失败");
}
}



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

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


预告

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

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

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


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


『博客开发日记-后台』之删除评论接口的实现
http://example.com/2026/05/03/『博客开发日记-后台』之删除评论接口的实现/
作者
云梦泽
发布于
2026年5月3日
更新于
2026年5月3日
许可协议