From ab97d9b48520b09878088d9823e41edcf0632296 Mon Sep 17 00:00:00 2001 From: Atri <68886053+li7355608@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:36:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(book):=20=E6=B7=BB=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E8=AF=B4=E5=AD=98=E5=9C=A8=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在保存评论前校验小说是否存在 --- .../xxyopen/novel/core/common/constant/ErrorCodeEnum.java | 5 +++++ .../github/xxyopen/novel/service/impl/BookServiceImpl.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java b/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java index 918cf30..4c0df4f 100644 --- a/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java +++ b/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java @@ -99,6 +99,11 @@ public enum ErrorCodeEnum { */ USER_COMMENTED("A2001", "用户已发表评论"), + /** + * 小说不存在 + */ + BOOK_NOT_FOUND("A2002", "小说ID不存在"), + /** * 作家发布异常 */ diff --git a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java index d688fd8..1322892 100644 --- a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java +++ b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java @@ -230,6 +230,11 @@ public class BookServiceImpl implements BookService { @Override public RestResp saveComment( @Key(expr = "#{userId + '::' + bookId}") UserCommentReqDto dto) { + // 校验书籍是否存在 + BookInfo bookInfo = bookInfoMapper.selectById(dto.getBookId()); + if (bookInfo == null) { + return RestResp.fail(ErrorCodeEnum.BOOK_NOT_FOUND); + } // 校验用户是否已发表评论 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(DatabaseConsts.BookCommentTable.COLUMN_USER_ID, dto.getUserId()) From 81a28d17742f781d92989ae9eef8c76716c061b0 Mon Sep 17 00:00:00 2001 From: Neko <68886053+li7355608@users.noreply.github.com> Date: Wed, 5 Nov 2025 11:16:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(book):=E5=A2=9E=E5=BC=BA=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E8=8E=B7=E5=8F=96=E4=BB=A3=E7=A0=81=E5=81=A5=E5=A3=AE?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加对书籍信息为空时的空值检查 - 优化书评列表查询逻辑,避免直接返回空列表导致的数据处理问题 - 统一返回结果的构建方式,提升代码可读性 --- .../novel/service/impl/BookServiceImpl.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java index 1322892..c8d3332 100644 --- a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java +++ b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java @@ -443,23 +443,28 @@ public class BookServiceImpl implements BookService { .orderByDesc(DatabaseConsts.CommonColumnEnum.UPDATE_TIME.getName()); IPage bookCommentPage = bookCommentMapper.selectPage(page, queryWrapper); List comments = bookCommentPage.getRecords(); + + List commentRespDtoList = Collections.emptyList(); if (!CollectionUtils.isEmpty(comments)) { List bookIds = comments.stream().map(BookComment::getBookId).toList(); QueryWrapper bookInfoQueryWrapper = new QueryWrapper<>(); bookInfoQueryWrapper.in(DatabaseConsts.CommonColumnEnum.ID.getName(), bookIds); Map bookInfoMap = bookInfoMapper.selectList(bookInfoQueryWrapper).stream() .collect(Collectors.toMap(BookInfo::getId, Function.identity())); - return RestResp.ok(PageRespDto.of(pageReqDto.getPageNum(), pageReqDto.getPageSize(), page.getTotal(), - comments.stream().map(v -> UserCommentRespDto.builder() + + commentRespDtoList = comments.stream().map(v -> { + BookInfo bookInfo = bookInfoMap.get(v.getBookId()); + return UserCommentRespDto.builder() .commentContent(v.getCommentContent()) - .commentBook(bookInfoMap.get(v.getBookId()).getBookName()) - .commentBookPic(bookInfoMap.get(v.getBookId()).getPicUrl()) + .commentBook(bookInfo != null ? bookInfo.getBookName() : null) + .commentBookPic(bookInfo != null ? bookInfo.getPicUrl() : null) .commentTime(v.getCreateTime()) - .build()).toList())); - + .build(); + }).toList(); } - return RestResp.ok(PageRespDto.of(pageReqDto.getPageNum(), pageReqDto.getPageSize(), page.getTotal(), - Collections.emptyList())); + + return RestResp.ok(PageRespDto.of(pageReqDto.getPageNum(), pageReqDto.getPageSize(), + page.getTotal(), commentRespDtoList)); } @Transactional(rollbackFor = Exception.class)