diff --git a/src/main/java/run/halo/app/controller/content/api/JournalController.java b/src/main/java/run/halo/app/controller/content/api/JournalController.java index 2a1da53f775afc200e0128f69a0755c3260d6a55..fdecedd248efecc5c23b8931652ae60b310d9a4b 100644 --- a/src/main/java/run/halo/app/controller/content/api/JournalController.java +++ b/src/main/java/run/halo/app/controller/content/api/JournalController.java @@ -71,7 +71,7 @@ public class JournalController { @GetMapping("{journalId:\\d+}") @ApiOperation("Gets a journal detail") - public JournalDTO getBy(@PathVariable("journalId") Integer journalId) { + public JournalWithCmtCountDTO getBy(@PathVariable("journalId") Integer journalId) { Journal journal = journalService.getById(journalId); return journalService.convertTo(journal); } diff --git a/src/main/java/run/halo/app/repository/base/BaseCommentRepository.java b/src/main/java/run/halo/app/repository/base/BaseCommentRepository.java index aeb4298137930899e4b45c965a999c9f13462e7c..e283af627091ecabc89fb80cf77fdad0ad6f735a 100644 --- a/src/main/java/run/halo/app/repository/base/BaseCommentRepository.java +++ b/src/main/java/run/halo/app/repository/base/BaseCommentRepository.java @@ -99,6 +99,15 @@ public interface BaseCommentRepository */ long countByPostId(@NonNull Integer postId); + /** + * Count comments by comment status and post id. + * + * @param status status must not be null + * @param postId post id must not be null. + * @return comments count + */ + long countByStatusAndPostId(@NonNull CommentStatus status, @NonNull Integer postId); + /** * Counts by comment status. * diff --git a/src/main/java/run/halo/app/service/JournalService.java b/src/main/java/run/halo/app/service/JournalService.java index c880945792f36f08c497e9afb9a81a284328657f..9b7a561e3813f853bc15e0493e4920230d296d04 100644 --- a/src/main/java/run/halo/app/service/JournalService.java +++ b/src/main/java/run/halo/app/service/JournalService.java @@ -68,13 +68,13 @@ public interface JournalService extends CrudService { Page pageBy(@NonNull JournalType type, @NonNull Pageable pageable); /** - * Converts to journal dto. + * Converts to journal with comment count dto. * * @param journal journal must not be null - * @return journal dto + * @return journal with comment count dto */ @NonNull - JournalDTO convertTo(@NonNull Journal journal); + JournalWithCmtCountDTO convertTo(@NonNull Journal journal); /** * Converts to journal with comment count dto list. diff --git a/src/main/java/run/halo/app/service/base/BaseCommentService.java b/src/main/java/run/halo/app/service/base/BaseCommentService.java index 0aab6c6c7df5737add9ee54dead4731a89779246..275df663df23047ee452c7863291948f1abe9155 100644 --- a/src/main/java/run/halo/app/service/base/BaseCommentService.java +++ b/src/main/java/run/halo/app/service/base/BaseCommentService.java @@ -144,6 +144,15 @@ public interface BaseCommentService */ long countByPostId(@NonNull Integer postId); + /** + * Count comments by comment status and post id. + * + * @param status status must not be null. + * @param postId post id must not be null. + * @return comments count + */ + long countByStatusAndPostId(@NonNull CommentStatus status, @NonNull Integer postId); + /** * Counts by comment status. * diff --git a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java index 1ab2ec542763c0c51fc740541f2bc78d4d187cf7..39e47c6bcaf8611c0be1f9b518a10a82ad699e7d 100644 --- a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java @@ -290,6 +290,12 @@ public abstract class BaseCommentServiceImpl return baseCommentRepository.countByPostId(postId); } + @Override + public long countByStatusAndPostId(@NonNull CommentStatus status, @NonNull Integer postId) { + Assert.notNull(postId, "Post id must not be null"); + return baseCommentRepository.countByStatusAndPostId(status, postId); + } + @Override public long countByStatus(@NonNull CommentStatus status) { return baseCommentRepository.countByStatus(status); diff --git a/src/main/java/run/halo/app/service/impl/JournalServiceImpl.java b/src/main/java/run/halo/app/service/impl/JournalServiceImpl.java index 4316cc67648bc80f09d68e3db3008b8d29a395e3..392ba208a13210682e57347e53e5da274867f2c2 100644 --- a/src/main/java/run/halo/app/service/impl/JournalServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/JournalServiceImpl.java @@ -107,10 +107,16 @@ public class JournalServiceImpl extends AbstractCrudService } @Override - public JournalDTO convertTo(Journal journal) { + public JournalWithCmtCountDTO convertTo(Journal journal) { Assert.notNull(journal, "Journal must not be null"); - return new JournalDTO().convertFrom(journal); + JournalWithCmtCountDTO journalWithCmtCountDto = new JournalWithCmtCountDTO() + .convertFrom(journal); + + journalWithCmtCountDto.setCommentCount(journalCommentService.countByStatusAndPostId( + CommentStatus.PUBLISHED, journal.getId())); + + return journalWithCmtCountDto; } @Override diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index f432f0b5081564a318029119a19c7e890c9a1262..8b67f6f05735aa7ad3b2b2dfc066d438647ae0b2 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -787,7 +787,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe postDetailVO.setMetaIds(metaIds); postDetailVO.setMetas(postMetaService.convertTo(postMetaList)); - postDetailVO.setCommentCount(postCommentService.countByPostId(post.getId())); + postDetailVO.setCommentCount(postCommentService.countByStatusAndPostId( + CommentStatus.PUBLISHED, post.getId())); postDetailVO.setFullPath(buildFullPath(post)); diff --git a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java index 0878d7d585915cb906208526bcb92a400efcd264..c41b324396a89857a9a3757703c98c0dba2f6c52 100644 --- a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java @@ -341,7 +341,8 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee sheetDetailVO.setSummary(generateSummary(sheet.getFormatContent())); } - sheetDetailVO.setCommentCount(sheetCommentService.countByPostId(sheet.getId())); + sheetDetailVO.setCommentCount(sheetCommentService.countByStatusAndPostId( + CommentStatus.PUBLISHED, sheet.getId())); sheetDetailVO.setFullPath(buildFullPath(sheet));