From 7482df932bd3798e5ade1c3547fa4c49050b2b8d Mon Sep 17 00:00:00 2001 From: "chosw1002@naver.com" Date: Sat, 8 Feb 2025 15:41:18 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EC=BF=A0=ED=8F=B0=20=EC=A2=85?= =?UTF-8?q?=EB=A5=98=20=EC=A1=B0=ED=9A=8C=20api=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gdsc/domain/coupon/api/AdminCouponController.java | 8 ++++++++ .../gdsc/domain/coupon/application/CouponService.java | 6 ++++++ .../domain/coupon/dto/response/CouponTypeResponse.java | 9 +++++++++ 3 files changed, 23 insertions(+) create mode 100644 src/main/java/com/gdschongik/gdsc/domain/coupon/dto/response/CouponTypeResponse.java diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java index c6f97c706..264fb6188 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java @@ -5,6 +5,7 @@ import com.gdschongik.gdsc.domain.coupon.dto.request.CouponIssueRequest; import com.gdschongik.gdsc.domain.coupon.dto.request.IssuedCouponQueryOption; import com.gdschongik.gdsc.domain.coupon.dto.response.CouponResponse; +import com.gdschongik.gdsc.domain.coupon.dto.response.CouponTypeResponse; import com.gdschongik.gdsc.domain.coupon.dto.response.IssuedCouponResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -44,6 +45,13 @@ public ResponseEntity> getCoupons() { return ResponseEntity.ok().body(response); } + @Operation(summary = "쿠폰 종류 조회", description = "발급 가능한 모든 쿠폰 종류를 조회합니다.") + @GetMapping + public ResponseEntity> getCouponTypes() { + List response = couponService.getCouponTypes(); + return ResponseEntity.ok().body(response); + } + @Operation(summary = "발급쿠폰 조회", description = "발급된 쿠폰을 조회합니다.") @GetMapping("/issued") public ResponseEntity> getIssuedCoupons( diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/application/CouponService.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/application/CouponService.java index 369eeed30..70418e7f0 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/coupon/application/CouponService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/application/CouponService.java @@ -13,6 +13,7 @@ import com.gdschongik.gdsc.domain.coupon.dto.request.CouponIssueRequest; import com.gdschongik.gdsc.domain.coupon.dto.request.IssuedCouponQueryOption; import com.gdschongik.gdsc.domain.coupon.dto.response.CouponResponse; +import com.gdschongik.gdsc.domain.coupon.dto.response.CouponTypeResponse; import com.gdschongik.gdsc.domain.coupon.dto.response.IssuedCouponResponse; import com.gdschongik.gdsc.domain.coupon.util.CouponNameUtil; import com.gdschongik.gdsc.domain.member.dao.MemberRepository; @@ -23,6 +24,7 @@ import com.gdschongik.gdsc.domain.study.domain.StudyHistory; import com.gdschongik.gdsc.global.exception.CustomException; import com.gdschongik.gdsc.global.util.MemberUtil; +import java.util.Arrays; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; @@ -145,4 +147,8 @@ public void revokeStudyCompletionCouponByStudyHistoryId(long studyHistoryId) { log.info("[CouponService] 스터디 수료 쿠폰 회수: issuedCouponId={}", issuedCoupon.getId()); } + + public List getCouponTypes() { + return Arrays.stream(CouponType.values()).map(CouponTypeResponse::from).toList(); + } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/dto/response/CouponTypeResponse.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/dto/response/CouponTypeResponse.java new file mode 100644 index 000000000..bc8c8a01f --- /dev/null +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/dto/response/CouponTypeResponse.java @@ -0,0 +1,9 @@ +package com.gdschongik.gdsc.domain.coupon.dto.response; + +import com.gdschongik.gdsc.domain.coupon.domain.CouponType; + +public record CouponTypeResponse(CouponType couponType, String name) { + public static CouponTypeResponse from(CouponType couponType) { + return new CouponTypeResponse(couponType, couponType.getValue()); + } +} From e2ffbb54e9ce66247e7c33218b9015a0b8436ae8 Mon Sep 17 00:00:00 2001 From: "chosw1002@naver.com" Date: Sat, 8 Feb 2025 16:37:09 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=EC=BF=A0=ED=8F=B0=20=EC=A2=85?= =?UTF-8?q?=EB=A5=98=20=EC=A1=B0=ED=9A=8C=20api=20=EC=97=94=EB=93=9C?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gdsc/domain/coupon/api/AdminCouponController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java index 264fb6188..c8861e8cd 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java @@ -46,7 +46,7 @@ public ResponseEntity> getCoupons() { } @Operation(summary = "쿠폰 종류 조회", description = "발급 가능한 모든 쿠폰 종류를 조회합니다.") - @GetMapping + @GetMapping("/types") public ResponseEntity> getCouponTypes() { List response = couponService.getCouponTypes(); return ResponseEntity.ok().body(response); From 9b7801728775ddf7f6b44b59fa95f94fec3d2933 Mon Sep 17 00:00:00 2001 From: "chosw1002@naver.com" Date: Sat, 8 Feb 2025 16:42:42 +0900 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20?= =?UTF-8?q?=EC=84=A4=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gdsc/domain/coupon/api/AdminCouponController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java index c8861e8cd..70ddb641a 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java +++ b/src/main/java/com/gdschongik/gdsc/domain/coupon/api/AdminCouponController.java @@ -45,7 +45,7 @@ public ResponseEntity> getCoupons() { return ResponseEntity.ok().body(response); } - @Operation(summary = "쿠폰 종류 조회", description = "발급 가능한 모든 쿠폰 종류를 조회합니다.") + @Operation(summary = "쿠폰 종류 목록 조회", description = "발급 가능한 모든 쿠폰 종류 목록을 조회합니다.") @GetMapping("/types") public ResponseEntity> getCouponTypes() { List response = couponService.getCouponTypes();