代码调试与BUG更改
Bug1:删除非本用户的新闻时,弹出删除成功的提示
我们期望,删除非本用户的新闻时,弹出“只能删除自己的新闻”,是本用户的新闻才能删除。
这应该就是前端代码的错误,先检查前端删除相关的代码。
首先deleteNews的返回缺少判断
后端的删除逻辑,返回的也是统一封装的Result
那么我们看一下request之后的response是什么数据,再去更改代码。
后端的响应是没有问题的,所以只需要更改前端的判断就行。
改为如下图所示的代码,加上对返回数据的判断。
Bug2:用户发布新闻后,new_count没有增加
检查发布新闻相关的功能
后端中NewsController中的addNews方法,修改为如下:
@Autowired
private UserService userService;
// 发布新闻
@PostMapping("/add")
public Result<?> addNews(@RequestBody NewsAddDTO dto) {
// 1. 插入新闻
Integer userId = UserContext.getCurrentUserId();
System.out.println("当前用户ID:" + userId);
if (userId == null) return Result.error("请先登录");
News news = new News();
news.setUserId(userId);
news.setTitle(dto.getTitle());
news.setContent(dto.getContent());
news.setViewCount(0);
boolean saved = newsService.save(news);
// 2. 更新用户的 news_count + 1
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(User::getId, userId)
.setSql("news_count = news_count + 1");
boolean updated = userService.update(wrapper);
if (saved && updated) {
return Result.success("发布成功");
} else {
return Result.error("发布失败");
}
}
排查代码时发现前端发布新闻的addNews方法中的userId设置也不对,不应该userId一直是1
在后端插个log,看一下,后端的userId是不是一直是1。
运行前后端工程,用id=2的张三登录(自己用个id不是1的用户就行),发布一条新闻,看一下后端控制台的输出log
log显示的id没有错,说明用户id不是这传过来的,所以不用改。(userId其实是在拦截器里设置的,通过token解析出来的)
刷新一下user表,id=2的用户,new_count已经是1了,Bug2就修复了。
浙公网安备 33010602011771号