From 082aee671571d74ddac3fc73694181a237f35fa5 Mon Sep 17 00:00:00 2001 From: johnniang Date: Thu, 21 Mar 2019 14:01:19 +0800 Subject: [PATCH] Complete page attachments api --- .../halo/model/dto/AttachmentOutputDTO.java | 60 +++++++++++++++++++ .../cc/ryanc/halo/model/dto/TagOutputDTO.java | 2 + .../ryanc/halo/service/AttachmentService.java | 10 ++++ .../service/impl/AttachmentServiceImpl.java | 15 +++++ .../admin/api/AttachmentController.java | 34 +++++++++++ 5 files changed, 121 insertions(+) create mode 100644 src/main/java/cc/ryanc/halo/model/dto/AttachmentOutputDTO.java create mode 100644 src/main/java/cc/ryanc/halo/web/controller/admin/api/AttachmentController.java diff --git a/src/main/java/cc/ryanc/halo/model/dto/AttachmentOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/AttachmentOutputDTO.java new file mode 100644 index 000000000..f45360555 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/AttachmentOutputDTO.java @@ -0,0 +1,60 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.dto.base.OutputConverter; +import cc.ryanc.halo.model.entity.Attachment; +import lombok.Data; + +/** + * Attachment output dto. + * + * @author johnniang + * @date 3/21/19 + */ +@Data +public class AttachmentOutputDTO implements OutputConverter { + + /** + * Attachment id. + */ + private Integer id; + + /** + * 附件名称 + */ + private String name; + + /** + * 附件路径 + */ + private String path; + + /** + * 缩略图路径 + */ + private String thumbPath; + + /** + * 附件类型 + */ + private String mediaType; + + /** + * 附件后缀 + */ + private String suffix; + + /** + * 附件尺寸 + */ + private String dimension; + + /** + * 附件大小 + */ + private String size; + + /** + * 附件上传类型 + */ + private Integer type; +} diff --git a/src/main/java/cc/ryanc/halo/model/dto/TagOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/TagOutputDTO.java index 8612bda4d..f87418cca 100644 --- a/src/main/java/cc/ryanc/halo/model/dto/TagOutputDTO.java +++ b/src/main/java/cc/ryanc/halo/model/dto/TagOutputDTO.java @@ -13,6 +13,8 @@ import lombok.Data; @Data public class TagOutputDTO implements OutputConverter { + private Integer id; + private String name; private String slugName; diff --git a/src/main/java/cc/ryanc/halo/service/AttachmentService.java b/src/main/java/cc/ryanc/halo/service/AttachmentService.java index a06c897b2..95a105390 100644 --- a/src/main/java/cc/ryanc/halo/service/AttachmentService.java +++ b/src/main/java/cc/ryanc/halo/service/AttachmentService.java @@ -1,7 +1,10 @@ package cc.ryanc.halo.service; +import cc.ryanc.halo.model.dto.AttachmentOutputDTO; import cc.ryanc.halo.model.entity.Attachment; import cc.ryanc.halo.service.base.CrudService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; /** @@ -11,4 +14,11 @@ import cc.ryanc.halo.service.base.CrudService; */ public interface AttachmentService extends CrudService { + /** + * Pages attachment output dtos. + * + * @param pageable page info must not be null + * @return a page of attachment output dto + */ + Page pageDtosBy(Pageable pageable); } diff --git a/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java index 5ed6cfeb0..6d7e701f5 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java @@ -1,10 +1,14 @@ package cc.ryanc.halo.service.impl; +import cc.ryanc.halo.model.dto.AttachmentOutputDTO; import cc.ryanc.halo.model.entity.Attachment; import cc.ryanc.halo.repository.AttachmentRepository; import cc.ryanc.halo.service.AttachmentService; import cc.ryanc.halo.service.base.AbstractCrudService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; /** * AttachmentService implementation class @@ -21,4 +25,15 @@ public class AttachmentServiceImpl extends AbstractCrudService pageDtosBy(Pageable pageable) { + Assert.notNull(pageable, "Page info must not be null"); + + // List all + Page attachmentPage = listAll(pageable); + + // Convert and return + return attachmentPage.map(attachment -> new AttachmentOutputDTO().convertFrom(attachment)); + } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/AttachmentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/AttachmentController.java new file mode 100644 index 000000000..e02616c60 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/AttachmentController.java @@ -0,0 +1,34 @@ +package cc.ryanc.halo.web.controller.admin.api; + +import cc.ryanc.halo.model.dto.AttachmentOutputDTO; +import cc.ryanc.halo.service.AttachmentService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import static org.springframework.data.domain.Sort.Direction.DESC; + +/** + * Attachment controller. + * + * @author johnniang + * @date 3/21/19 + */ +@RestController +@RequestMapping("/admin/api/attachments") +public class AttachmentController { + + private final AttachmentService attachmentService; + + public AttachmentController(AttachmentService attachmentService) { + this.attachmentService = attachmentService; + } + + @GetMapping + public Page pageBy(@PageableDefault(sort = "updateTime", direction = DESC) Pageable pageable) { + return attachmentService.pageDtosBy(pageable); + } +}