From c917affdd9f2e43cb131eff2944b37ba717398b0 Mon Sep 17 00:00:00 2001 From: rlarlgnszx Date: Mon, 15 Jul 2024 00:02:09 +0900 Subject: [PATCH] =?UTF-8?q?[docs]=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EB=82=B4=EC=97=AD=EC=A1=B0=ED=9A=8C=20API=20=EB=AA=85=EC=84=B8?= =?UTF-8?q?=20=EC=98=88=EC=8B=9C=20=EC=B6=94=EA=B0=80=20-=20#100?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dateroad/point/api/PointApi.java | 88 +++++++++++++++++++ .../dateroad/point/api/PointController.java | 2 +- 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 dateroad-api/src/main/java/org/dateroad/point/api/PointApi.java diff --git a/dateroad-api/src/main/java/org/dateroad/point/api/PointApi.java b/dateroad-api/src/main/java/org/dateroad/point/api/PointApi.java new file mode 100644 index 00000000..ff8884e8 --- /dev/null +++ b/dateroad-api/src/main/java/org/dateroad/point/api/PointApi.java @@ -0,0 +1,88 @@ +package org.dateroad.point.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.dateroad.auth.argumentresolve.UserId; +import org.dateroad.point.dto.response.PointGetAllRes; +import org.springframework.http.ResponseEntity; + +@Tag(name = "포인트 관련 API") +@SecurityRequirement(name = "Authorization") +public interface PointApi { + @Operation( + summary = "포인트 내역 조회 API", + responses = { + @ApiResponse( + responseCode = "200", + content = @Content( + schema = @Schema(implementation = PointGetAllRes.class), + examples = @ExampleObject(value = """ + { + "gained": { + "points": [ + { + "point": 100, + "description": "첫 구매 적립", + "createdAt": "2023.07.14" + }, + { + "point": 200, + "description": "리뷰 작성 적립", + "createdAt": "2023.07.15" + } + ] + }, + "used": { + "points": [ + { + "point": 50, + "description": "구매 사용", + "createdAt": "2023.07.16" + }, + { + "point": 80, + "description": "이벤트 참여 사용", + "createdAt": "2023.07.17" + } + ] + } + } + """) + ), + description = "요청이 성공했습니다." + ), + @ApiResponse( + responseCode = "400", + description = "잘못된 요청입니다.", + content = @Content), + @ApiResponse( + responseCode = "401", + description = "액세스 토큰의 형식이 올바르지 않습니다. Bearer 타입을 확인해 주세요.", + content = @Content), + @ApiResponse( + responseCode = "401", + description = "액세스 토큰의 값이 올바르지 않습니다.", + content = @Content), + @ApiResponse( + responseCode = "401", + description = "액세스 토큰이 만료되었습니다. 재발급 받아주세요.", + content = @Content), + @ApiResponse( + responseCode = "405", + description = "잘못된 HTTP method 요청입니다.", + content = @Content), + @ApiResponse( + responseCode = "500", + description = "서버 내부 오류입니다.", + content = @Content)}) + public ResponseEntity getAllPoints( + @Parameter(required = true) + @UserId Long userId + ); +} diff --git a/dateroad-api/src/main/java/org/dateroad/point/api/PointController.java b/dateroad-api/src/main/java/org/dateroad/point/api/PointController.java index 121953a6..83715dfb 100644 --- a/dateroad-api/src/main/java/org/dateroad/point/api/PointController.java +++ b/dateroad-api/src/main/java/org/dateroad/point/api/PointController.java @@ -13,7 +13,7 @@ @RestController @RequestMapping("/api/v1/points") @RequiredArgsConstructor -public class PointController { +public class PointController implements PointApi{ private final PointService pointService; @GetMapping