代码调试与BUG更改

  • 代码调试与BUG更改

    Bug1:删除非本用户的新闻时,弹出删除成功的提示

    我们希望删除非本用户的新闻时,弹出“只能删除自己的新闻”,是本用户的新闻才能删除。

    这是前端代码的错误,先检查前端删除相关的代码。

    首先deleteNews的返回缺少判断5

    img

    后端的删除逻辑,返回的也是统一封装的Result

    img

    看一下request之后的response是什么数据,再去更改代码。后端的响应是没有问题的,所以只需要更改前端的判断就行。

    img

    改为如下图所示的代码,加上对返回数据的判断。

    img

    用户发布新闻后,new_count没有增加

    img

    检查发布新闻相关的功能

    后端中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("发布失败");
            }
        }
    

    添加位置:

    img

    排查代码时发现前端发布新闻的addNews方法中的userId设置也不对,不应该userId一直是1。

    img

    在后端插个log,看一下,后端的userId是不是一直是1。

    img

    运行前后端工程,用id=2的张三登录(自己用个id不是1的用户就行),发布一条新闻,看一下后端控制台的输出log

    img

    log显示的id没有错,说明用户id不是这传过来的,所以不用改。(userId其实是在拦截器里设置的,通过token解析出来的)

    刷新一下user表,id=2的用户,new_count已经是1了,Bug2就修复了。

    img

posted @ 2026-06-28 15:39  沈瑜九  阅读(5)  评论(0)    收藏  举报