代码调试与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就修复了。

posted on 2026-06-24 11:00  爱我的果果吖  阅读(1)  评论(0)    收藏  举报