Skip to content

Commit

Permalink
🔨 Fix: Page 반환 형식 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
HyoBN committed Jan 30, 2024
1 parent 09378fe commit cd063c1
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 5 deletions.
28 changes: 28 additions & 0 deletions src/main/java/cmc/peerna/apiResponse/response/PageResponseDto.java
Original file line number Diff line number Diff line change
@@ -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<T> {
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 <T> PageResponseDto<T> of(T result, RootRequestDto.PageRequestDto requestDto){
return new PageResponseDto<>(2000 , ResponseStatus._SUCCESS.getMessage(), result, requestDto);
}

}
83 changes: 78 additions & 5 deletions src/main/java/cmc/peerna/web/controller/ProjectController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -26,6 +28,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Slf4j
@Validated
Expand Down Expand Up @@ -53,6 +57,28 @@ public ResponseDto<MemberResponseDto.MemberStatusDto> 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<ProjectResponseDto.ProjectPageDto> 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))),
Expand All @@ -64,17 +90,52 @@ public ResponseDto<MemberResponseDto.MemberStatusDto> saveMemberInfo(@AuthMember

})
@GetMapping("/project")
public ResponseDto<ProjectResponseDto.ProjectPageDto> getAllProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) {
public PageResponseDto<List<ProjectResponseDto.ProjectSimpleProfileDto>> 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);

List<ProjectResponseDto.ProjectSimpleProfileDto> 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<ProjectResponseDto.ProjectPageDto> 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))),
Expand All @@ -85,15 +146,27 @@ else if (page < 1)
@Parameter(name = "member", hidden = true)
})
@GetMapping("/project/my")
public ResponseDto<ProjectResponseDto.ProjectPageDto> getMyProject(@AuthMember Member member, @CheckPage @RequestParam(name = "page") Integer page) {
public PageResponseDto<List<ProjectResponseDto.ProjectSimpleProfileDto>> 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<ProjectResponseDto.ProjectSimpleProfileDto> 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입니다.")
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/cmc/peerna/web/dto/requestDto/RootRequestDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

0 comments on commit cd063c1

Please sign in to comment.