diff --git a/src/main/java/cc/ryanc/halo/model/dto/GalleryOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/GalleryOutputDTO.java new file mode 100644 index 000000000..1e3be35ef --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/GalleryOutputDTO.java @@ -0,0 +1,21 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.dto.base.OutputConverter; +import cc.ryanc.halo.model.entity.Gallery; +import lombok.Data; + +/** + * @author : RYAN0UP + * @date : 2019/3/21 + */ +@Data +public class GalleryOutputDTO implements OutputConverter { + + private Integer id; + + private String name; + + private String thumbnail; + + private String url; +} diff --git a/src/main/java/cc/ryanc/halo/service/GalleryService.java b/src/main/java/cc/ryanc/halo/service/GalleryService.java index 84329ecf1..ba887f7dc 100644 --- a/src/main/java/cc/ryanc/halo/service/GalleryService.java +++ b/src/main/java/cc/ryanc/halo/service/GalleryService.java @@ -1,7 +1,13 @@ package cc.ryanc.halo.service; +import cc.ryanc.halo.model.dto.GalleryOutputDTO; +import cc.ryanc.halo.model.dto.LinkOutputDTO; import cc.ryanc.halo.model.entity.Gallery; import cc.ryanc.halo.service.base.CrudService; +import org.springframework.data.domain.Sort; +import org.springframework.lang.NonNull; + +import java.util.List; /** * Gallery service. @@ -10,4 +16,11 @@ import cc.ryanc.halo.service.base.CrudService; */ public interface GalleryService extends CrudService { + /** + * List gallery dtos. + * + * @param sort sort + * @return all galleries + */ + List listDtos(@NonNull Sort sort); } diff --git a/src/main/java/cc/ryanc/halo/service/impl/GalleryServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/GalleryServiceImpl.java index 9a0ec3d43..7bd59bf04 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/GalleryServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/GalleryServiceImpl.java @@ -1,10 +1,16 @@ package cc.ryanc.halo.service.impl; +import cc.ryanc.halo.model.dto.GalleryOutputDTO; import cc.ryanc.halo.model.entity.Gallery; import cc.ryanc.halo.repository.GalleryRepository; import cc.ryanc.halo.service.GalleryService; import cc.ryanc.halo.service.base.AbstractCrudService; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; /** * GalleryService implementation class @@ -21,4 +27,17 @@ public class GalleryServiceImpl extends AbstractCrudService im super(galleryRepository); this.galleryRepository = galleryRepository; } + + /** + * List gallery dtos. + * + * @param sort sort + * @return all galleries + */ + @Override + public List listDtos(Sort sort) { + Assert.notNull(sort, "Sort info must not be null"); + + return listAll(sort).stream().map(gallery -> (GalleryOutputDTO) new GalleryOutputDTO().convertFrom(gallery)).collect(Collectors.toList()); + } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/.gitkeep b/src/main/java/cc/ryanc/halo/web/controller/admin/api/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/GalleryController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/GalleryController.java new file mode 100644 index 000000000..55ce8b868 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/GalleryController.java @@ -0,0 +1,39 @@ +package cc.ryanc.halo.web.controller.admin.api; + +import cc.ryanc.halo.model.dto.GalleryOutputDTO; +import cc.ryanc.halo.service.GalleryService; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.SortDefault; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Gallery controller + * + * @author : RYAN0UP + * @date : 2019/3/21 + */ +@RestController +@RequestMapping("/admin/api/galleries") +public class GalleryController { + + private final GalleryService galleryService; + + public GalleryController(GalleryService galleryService) { + this.galleryService = galleryService; + } + + /** + * List all galleries + * + * @param sort sort + * @return all of galleries + */ + @GetMapping + public List listGalleries(@SortDefault(sort = "updateTime", direction = Sort.Direction.DESC) Sort sort) { + return galleryService.listDtos(sort); + } +}