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..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 @@ -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()) @@ -438,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)