From 54e17acfc01295fd77ec5f5ddaba700677305592 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Tue, 12 Nov 2019 20:13:51 +0800 Subject: [PATCH] solved #361 --- .../content/ContentSheetController.java | 32 ++++++++++++++++--- .../run/halo/app/service/PhotoService.java | 9 ++++++ .../app/service/impl/PhotoServiceImpl.java | 9 ++++++ 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/main/java/run/halo/app/controller/content/ContentSheetController.java b/src/main/java/run/halo/app/controller/content/ContentSheetController.java index e60e53f2a..e11849051 100644 --- a/src/main/java/run/halo/app/controller/content/ContentSheetController.java +++ b/src/main/java/run/halo/app/controller/content/ContentSheetController.java @@ -2,6 +2,7 @@ package run.halo.app.controller.content; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.SortDefault; import org.springframework.stereotype.Controller; @@ -11,14 +12,12 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import run.halo.app.cache.StringCacheStore; import run.halo.app.exception.ForbiddenException; +import run.halo.app.model.dto.PhotoDTO; import run.halo.app.model.entity.Sheet; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.support.HaloConst; import run.halo.app.model.vo.BaseCommentVO; -import run.halo.app.service.OptionService; -import run.halo.app.service.SheetCommentService; -import run.halo.app.service.SheetService; -import run.halo.app.service.ThemeService; +import run.halo.app.service.*; import run.halo.app.utils.MarkdownUtils; import java.util.concurrent.TimeUnit; @@ -41,6 +40,8 @@ public class ContentSheetController { private final SheetCommentService sheetCommentService; + private final PhotoService photoService; + private final OptionService optionService; private final StringCacheStore cacheStore; @@ -48,11 +49,13 @@ public class ContentSheetController { public ContentSheetController(SheetService sheetService, ThemeService themeService, SheetCommentService sheetCommentService, + PhotoService photoService, OptionService optionService, StringCacheStore cacheStore) { this.sheetService = sheetService; this.themeService = themeService; this.sheetCommentService = sheetCommentService; + this.photoService = photoService; this.optionService = optionService; this.cacheStore = cacheStore; } @@ -63,7 +66,26 @@ public class ContentSheetController { * @return template path: themes/{theme}/photos.ftl */ @GetMapping(value = "/photos") - public String photos() { + public String photos(Model model, + @RequestParam(value = "size", required = false, defaultValue = "10") Integer size) { + return photos(model, 1, size); + } + + /** + * Render photo page + * + * @param model model + * @param page current page + * @param size current page size + * @return template path: themes/{theme}/photos.ftl + */ + @GetMapping(value = "/photos/page/{page}") + public String photos(Model model, + @PathVariable(value = "page") Integer page, + @RequestParam(value = "size", required = false, defaultValue = "10") Integer size) { + Pageable pageable = PageRequest.of(page >= 1 ? page - 1 : page, size, Sort.by(DESC, "createTime")); + Page photos = photoService.pageBy(pageable); + model.addAttribute("photos", photos); return themeService.render("photos"); } diff --git a/src/main/java/run/halo/app/service/PhotoService.java b/src/main/java/run/halo/app/service/PhotoService.java index dec0645d0..105fd99e5 100644 --- a/src/main/java/run/halo/app/service/PhotoService.java +++ b/src/main/java/run/halo/app/service/PhotoService.java @@ -17,6 +17,7 @@ import java.util.List; * Photo service interface. * * @author johnniang + * @author ryanwang * @date 2019-03-14 */ public interface PhotoService extends CrudService { @@ -46,6 +47,14 @@ public interface PhotoService extends CrudService { */ List listByTeam(@NonNull String team, Sort sort); + /** + * Pages photo output dtos. + * + * @param pageable page info must not be null + * @return a page of photo output dto + */ + Page pageBy(@NonNull Pageable pageable); + /** * Pages photo output dtos. * diff --git a/src/main/java/run/halo/app/service/impl/PhotoServiceImpl.java b/src/main/java/run/halo/app/service/impl/PhotoServiceImpl.java index 45c8c74f2..943ce76bf 100644 --- a/src/main/java/run/halo/app/service/impl/PhotoServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PhotoServiceImpl.java @@ -82,6 +82,15 @@ public class PhotoServiceImpl extends AbstractCrudService implem return photos.stream().map(photo -> (PhotoDTO) new PhotoDTO().convertFrom(photo)).collect(Collectors.toList()); } + @Override + public Page pageBy(Pageable pageable) { + Assert.notNull(pageable, "Page info must not be null"); + + Page photos = photoRepository.findAll(pageable); + + return photos.map(photo -> new PhotoDTO().convertFrom(photo)); + } + @Override public Page pageDtosBy(Pageable pageable, PhotoQuery photoQuery) { Assert.notNull(pageable, "Page info must not be null");