From cd063c1d853c1a0f144ea783f5982834dcb83e93 Mon Sep 17 00:00:00 2001 From: HyoBN Date: Tue, 30 Jan 2024 23:18:59 +0900 Subject: [PATCH] =?UTF-8?q?:hammer:=20Fix:=20Page=20=EB=B0=98=ED=99=98=20?= =?UTF-8?q?=ED=98=95=EC=8B=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiResponse/response/PageResponseDto.java | 28 +++++++ .../web/controller/ProjectController.java | 83 +++++++++++++++++-- .../web/dto/requestDto/RootRequestDto.java | 13 +++ 3 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 src/main/java/cmc/peerna/apiResponse/response/PageResponseDto.java diff --git a/src/main/java/cmc/peerna/apiResponse/response/PageResponseDto.java b/src/main/java/cmc/peerna/apiResponse/response/PageResponseDto.java new file mode 100644 index 0000000..54be62b --- /dev/null +++ b/src/main/java/cmc/peerna/apiResponse/response/PageResponseDto.java @@ -0,0 +1,28 @@ +package cmc.peerna.apiResponse.response; + +import cmc.peerna.apiResponse.code.ResponseStatus; +import cmc.peerna.web.dto.requestDto.RootRequestDto; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +//@JsonPropertyOrder({"code", "message", "result"}) +public class PageResponseDto { + private final Integer code; + private final String message; + private T result; + private RootRequestDto.PageRequestDto pageRequestDto; +// private Long totalElements; +// private Integer currentPageElements; +// private Integer totalPage; +// private Boolean isFirst; +// private Boolean isLast; + + + public static PageResponseDto of(T result, RootRequestDto.PageRequestDto requestDto){ + return new PageResponseDto<>(2000 , ResponseStatus._SUCCESS.getMessage(), result, requestDto); + } + +} diff --git a/src/main/java/cmc/peerna/web/controller/ProjectController.java b/src/main/java/cmc/peerna/web/controller/ProjectController.java index 2e38b4e..6c0f26d 100644 --- a/src/main/java/cmc/peerna/web/controller/ProjectController.java +++ b/src/main/java/cmc/peerna/web/controller/ProjectController.java @@ -2,6 +2,7 @@ import cmc.peerna.apiResponse.code.ResponseStatus; import cmc.peerna.apiResponse.exception.handler.MemberException; +import cmc.peerna.apiResponse.response.PageResponseDto; import cmc.peerna.apiResponse.response.ResponseDto; import cmc.peerna.converter.MemberConverter; import cmc.peerna.domain.Member; @@ -10,6 +11,7 @@ import cmc.peerna.validation.annotation.CheckPage; import cmc.peerna.web.dto.requestDto.MemberRequestDto; import cmc.peerna.web.dto.requestDto.ProjectRequestDto; +import cmc.peerna.web.dto.requestDto.RootRequestDto; import cmc.peerna.web.dto.responseDto.MemberResponseDto; import cmc.peerna.web.dto.responseDto.ProjectResponseDto; import io.swagger.v3.oas.annotations.Operation; @@ -26,6 +28,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @Slf4j @Validated @@ -53,6 +57,28 @@ public ResponseDto saveMemberInfo(@AuthMember return ResponseDto.of(MemberConverter.toMemberStatusDto(member.getId(), "프로젝트 생성 완료")); } +// @Operation(summary = "전체 프로젝트 조회 API ✔️🔑", description = "전체 프로젝트 조회 API입니다.") +// @ApiResponses({ +// @ApiResponse(responseCode = "4012", description = "BAD_REQUEST , 페이지 번호는 1 이상이여야 합니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// @ApiResponse(responseCode = "4013", description = "BAD_REQUEST , 페이지 번호가 페이징 범위를 초과했습니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// @ApiResponse(responseCode = "2301", description = "OK , 프로젝트가 존재하지 않습니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// }) +// @Parameters({ +// @Parameter(name = "member", hidden = true) +// +// }) +// @GetMapping("/project") +// public ResponseDto getAllProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { +// if (page == null) +// page = 1; +// else if (page < 1) +// throw new MemberException(ResponseStatus.UNDER_PAGE_INDEX_ERROR); +// page -= 1; +// +// ProjectResponseDto.ProjectPageDto allProject = projectService.getAllProject(page); +// return ResponseDto.of(allProject); +// } + @Operation(summary = "전체 프로젝트 조회 API ✔️🔑", description = "전체 프로젝트 조회 API입니다.") @ApiResponses({ @ApiResponse(responseCode = "4012", description = "BAD_REQUEST , 페이지 번호는 1 이상이여야 합니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), @@ -64,7 +90,7 @@ public ResponseDto saveMemberInfo(@AuthMember }) @GetMapping("/project") - public ResponseDto getAllProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { + public PageResponseDto> getAllProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { if (page == null) page = 1; else if (page < 1) @@ -72,9 +98,44 @@ else if (page < 1) page -= 1; ProjectResponseDto.ProjectPageDto allProject = projectService.getAllProject(page); - return ResponseDto.of(allProject); + + List projectList; + projectList = allProject.getProjectList(); + + RootRequestDto.PageRequestDto pageRequestDto = RootRequestDto.PageRequestDto.builder() + .totalElements(allProject.getTotalElements()) + .currentPageElements(allProject.getCurrentPageElements()) + .totalPage(allProject.getTotalPage()) + .isFirst(allProject.getIsFirst()) + .isLast(allProject.getIsLast()) + .build(); + + return PageResponseDto.of(projectList, pageRequestDto); } + + +// @Operation(summary = "내 프로젝트 조회 API ✔️🔑", description = "내 프로젝트 조회 API입니다.") +// @ApiResponses({ +// @ApiResponse(responseCode = "4012", description = "BAD_REQUEST , 페이지 번호는 1 이상이여야 합니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// @ApiResponse(responseCode = "4013", description = "BAD_REQUEST , 페이지 번호가 페이징 범위를 초과했습니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// @ApiResponse(responseCode = "2301", description = "OK , 프로젝트가 존재하지 않습니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), +// }) +// @Parameters({ +// @Parameter(name = "member", hidden = true) +// }) +// @GetMapping("/project/my") +// public ResponseDto getMyProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { +// if (page == null) +// page = 1; +// else if (page < 1) +// throw new MemberException(ResponseStatus.UNDER_PAGE_INDEX_ERROR); +// page -= 1; +// +// ProjectResponseDto.ProjectPageDto allProject = projectService.getMyProject(member, page); +// return ResponseDto.of(allProject); +// } + @Operation(summary = "내 프로젝트 조회 API ✔️🔑", description = "내 프로젝트 조회 API입니다.") @ApiResponses({ @ApiResponse(responseCode = "4012", description = "BAD_REQUEST , 페이지 번호는 1 이상이여야 합니다.", content = @Content(schema = @Schema(implementation = ResponseDto.class))), @@ -85,15 +146,27 @@ else if (page < 1) @Parameter(name = "member", hidden = true) }) @GetMapping("/project/my") - public ResponseDto getMyProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { + public PageResponseDto> getMyProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) { if (page == null) page = 1; else if (page < 1) throw new MemberException(ResponseStatus.UNDER_PAGE_INDEX_ERROR); page -= 1; - ProjectResponseDto.ProjectPageDto allProject = projectService.getMyProject(member, page); - return ResponseDto.of(allProject); + ProjectResponseDto.ProjectPageDto myProject = projectService.getMyProject(member, page); + + List projectList; + projectList = myProject.getProjectList(); + + RootRequestDto.PageRequestDto pageRequestDto = RootRequestDto.PageRequestDto.builder() + .totalElements(myProject.getTotalElements()) + .currentPageElements(myProject.getCurrentPageElements()) + .totalPage(myProject.getTotalPage()) + .isFirst(myProject.getIsFirst()) + .isLast(myProject.getIsLast()) + .build(); + + return PageResponseDto.of(projectList, pageRequestDto); } @Operation(summary = "프로젝트 상세 페이지 조회 API ✔️🔑", description = "프로젝트 상세 페이지 조회 API입니다.") diff --git a/src/main/java/cmc/peerna/web/dto/requestDto/RootRequestDto.java b/src/main/java/cmc/peerna/web/dto/requestDto/RootRequestDto.java index d21439e..917c92d 100644 --- a/src/main/java/cmc/peerna/web/dto/requestDto/RootRequestDto.java +++ b/src/main/java/cmc/peerna/web/dto/requestDto/RootRequestDto.java @@ -27,4 +27,17 @@ public static class FCMTestDto{ public static class PeerTypeDto{ TestType peerType; } + + + @Builder + @Getter + @AllArgsConstructor(access = AccessLevel.PROTECTED) + @NoArgsConstructor(access = AccessLevel.PROTECTED) + public static class PageRequestDto{ + Long totalElements; + Integer currentPageElements; + Integer totalPage; + Boolean isFirst; + Boolean isLast; + } }