diff --git a/src/main/java/run/halo/app/controller/admin/api/SheetController.java b/src/main/java/run/halo/app/controller/admin/api/SheetController.java index 7b2313f29..533182612 100644 --- a/src/main/java/run/halo/app/controller/admin/api/SheetController.java +++ b/src/main/java/run/halo/app/controller/admin/api/SheetController.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.web.bind.annotation.*; +import run.halo.app.model.dto.post.SheetListDTO; import run.halo.app.model.entity.Sheet; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.params.SheetParam; @@ -38,8 +39,9 @@ public class SheetController { @GetMapping @ApiOperation("Gets a page of sheet") - public Page pageBy(@PageableDefault(sort = "editTime", direction = DESC) Pageable pageable) { - return sheetService.pageBy(pageable); + public Page pageBy(@PageableDefault(sort = "editTime", direction = DESC) Pageable pageable) { + Page sheetPage = sheetService.pageBy(pageable); + return sheetService.convertToListDto(sheetPage); } @PostMapping diff --git a/src/main/java/run/halo/app/service/SheetCommentService.java b/src/main/java/run/halo/app/service/SheetCommentService.java index 7fa8fc3be..df44aefc0 100644 --- a/src/main/java/run/halo/app/service/SheetCommentService.java +++ b/src/main/java/run/halo/app/service/SheetCommentService.java @@ -1,7 +1,7 @@ package run.halo.app.service; import run.halo.app.model.entity.SheetComment; -import run.halo.app.service.base.CrudService; +import run.halo.app.service.base.BaseCommentService; /** * Sheet comment service interface. @@ -9,6 +9,6 @@ import run.halo.app.service.base.CrudService; * @author johnniang * @date 19-4-24 */ -public interface SheetCommentService extends CrudService { +public interface SheetCommentService extends BaseCommentService { } diff --git a/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java index ec0acc16f..638418205 100644 --- a/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java @@ -1,10 +1,13 @@ package run.halo.app.service.impl; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import run.halo.app.model.entity.SheetComment; +import run.halo.app.repository.PostRepository; import run.halo.app.repository.SheetCommentRepository; +import run.halo.app.service.OptionService; import run.halo.app.service.SheetCommentService; -import run.halo.app.service.base.AbstractCrudService; +import run.halo.app.service.base.BaseCommentServiceImpl; /** * Sheet comment service implementation. @@ -13,12 +16,15 @@ import run.halo.app.service.base.AbstractCrudService; * @date 19-4-24 */ @Service -public class SheetCommentServiceImpl extends AbstractCrudService implements SheetCommentService { +public class SheetCommentServiceImpl extends BaseCommentServiceImpl implements SheetCommentService { private final SheetCommentRepository sheetCommentRepository; - public SheetCommentServiceImpl(SheetCommentRepository sheetCommentRepository) { - super(sheetCommentRepository); + public SheetCommentServiceImpl(SheetCommentRepository sheetCommentRepository, + PostRepository postRepository, + OptionService optionService, + ApplicationEventPublisher eventPublisher) { + super(sheetCommentRepository, postRepository, optionService, eventPublisher); this.sheetCommentRepository = sheetCommentRepository; } } 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 d3f8b6b22..5cfae8ce3 100644 --- a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java @@ -22,6 +22,7 @@ import run.halo.app.utils.MarkdownUtils; import run.halo.app.utils.ServiceUtils; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; @@ -107,9 +108,13 @@ public class SheetServiceImpl extends AbstractCrudService implem Set sheetIds = ServiceUtils.fetchProperty(sheets, Sheet::getId); + // key: sheet id, value: comment count + Map sheetCommentCountMap = sheetCommentService.countByPostIds(sheetIds); return sheetPage.map(sheet -> { - return new SheetListDTO().convertFrom(sheet); + SheetListDTO sheetListDTO = new SheetListDTO().convertFrom(sheet); + sheetListDTO.setCommentCount(sheetCommentCountMap.getOrDefault(sheet.getId(), 0L)); + return sheetListDTO; }); }