From 252c4bec11291d737c3c11d57c5ca37a1eba04d2 Mon Sep 17 00:00:00 2001 From: choiseon Date: Wed, 21 Jun 2023 00:24:29 +0900 Subject: [PATCH] =?UTF-8?q?[#22]=20refactor=20:=20=EC=BF=A0=ED=8F=B0=20con?= =?UTF-8?q?troller=20=EC=97=AD=ED=95=A0=EC=97=90=20=EB=A7=9E=EA=B2=8C=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=B6=84=EB=A6=AC=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coupon/api/CouponInfoController.java | 29 ++++++++++++++++ .../coupon/api/CouponIssueController.java | 29 ++++------------ .../coupon/api/CouponIssueInfoController.java | 26 +++++++++++++++ ...troller.java => CouponSaveController.java} | 19 ++--------- .../coupon/api/CouponUseController.java | 33 +++++++++++++++++++ .../application/CouponIssuanceService.java | 3 +- .../coupon/application/CouponUseService.java | 2 ++ .../application/CouponPublishServiceTest.java | 7 ++-- 8 files changed, 105 insertions(+), 43 deletions(-) create mode 100644 src/main/java/com/flab/goodchoice/coupon/api/CouponInfoController.java create mode 100644 src/main/java/com/flab/goodchoice/coupon/api/CouponIssueInfoController.java rename src/main/java/com/flab/goodchoice/coupon/api/{CouponController.java => CouponSaveController.java} (62%) create mode 100644 src/main/java/com/flab/goodchoice/coupon/api/CouponUseController.java diff --git a/src/main/java/com/flab/goodchoice/coupon/api/CouponInfoController.java b/src/main/java/com/flab/goodchoice/coupon/api/CouponInfoController.java new file mode 100644 index 0000000..a5195c4 --- /dev/null +++ b/src/main/java/com/flab/goodchoice/coupon/api/CouponInfoController.java @@ -0,0 +1,29 @@ +package com.flab.goodchoice.coupon.api; + +import com.flab.goodchoice.coupon.application.CouponQueryService; +import com.flab.goodchoice.coupon.dto.CouponInfoResponse; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.UUID; + +@RequestMapping("/api/coupons") +@RestController +public class CouponInfoController { + + private final CouponQueryService couponQueryService; + + public CouponInfoController(CouponQueryService couponQueryService) { + this.couponQueryService = couponQueryService; + } + + @GetMapping + public List getAllCoupons() { + return couponQueryService.getAllCoupons(); + } + + @GetMapping("/{couponToken}") + public CouponInfoResponse getCoupon(@PathVariable final UUID couponToken) { + return couponQueryService.getCoupon(couponToken); + } +} diff --git a/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueController.java b/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueController.java index 1d263f4..e9c2fcc 100644 --- a/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueController.java +++ b/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueController.java @@ -1,23 +1,21 @@ package com.flab.goodchoice.coupon.api; import com.flab.goodchoice.coupon.application.CouponIssuanceService; -import com.flab.goodchoice.coupon.application.CouponUseService; -import com.flab.goodchoice.coupon.dto.*; -import org.springframework.web.bind.annotation.*; +import com.flab.goodchoice.coupon.dto.CouponPublishRequest; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import javax.validation.Valid; -import java.util.List; import java.util.UUID; @RequestMapping("/api/coupons") @RestController public class CouponIssueController { - private final CouponUseService couponUseService; private final CouponIssuanceService couponIssuanceService; - public CouponIssueController(CouponUseService couponUseService, CouponIssuanceService couponIssuanceService) { - this.couponUseService = couponUseService; + public CouponIssueController(CouponIssuanceService couponIssuanceService) { this.couponIssuanceService = couponIssuanceService; } @@ -30,19 +28,4 @@ public UUID createCouponPublish(@RequestBody CouponPublishRequest couponPublishR public UUID createCouponPublishRedissonAop(@RequestBody CouponPublishRequest couponPublishRequest) { return couponIssuanceService.couponIssuanceRedissonAop(couponPublishRequest.memberId(), couponPublishRequest.couponToken()); } - - @GetMapping("/publish/{memberId}") - public List getMemberCoupon(@PathVariable Long memberId) { - return couponIssuanceService.getMemberCoupon(memberId); - } - - @PostMapping("/use") - public CouponUsedInfoResponse useCoupon(@RequestBody @Valid CouponUsedRequest request) { - return couponUseService.useCoupon(request.memberId(), request.couponPublishToken(), request.price()); - } - - @PostMapping("/cancel") - public CouponUsedCancelInfoResponse usedCouponCancel(@RequestBody @Valid CouponUsedRequest request) { - return couponUseService.usedCouponCancel(request.memberId(), request.couponPublishToken(), request.price()); - } } diff --git a/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueInfoController.java b/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueInfoController.java new file mode 100644 index 0000000..2ae6616 --- /dev/null +++ b/src/main/java/com/flab/goodchoice/coupon/api/CouponIssueInfoController.java @@ -0,0 +1,26 @@ +package com.flab.goodchoice.coupon.api; + +import com.flab.goodchoice.coupon.application.CouponIssuanceService; +import com.flab.goodchoice.coupon.dto.MemberSpecificCouponResponse; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RequestMapping("/api/coupons") +@RestController +public class CouponIssueInfoController { + + private final CouponIssuanceService couponIssuanceService; + + public CouponIssueInfoController(CouponIssuanceService couponIssuanceService) { + this.couponIssuanceService = couponIssuanceService; + } + + @GetMapping("/publish/{memberId}") + public List getMemberCoupon(@PathVariable Long memberId) { + return couponIssuanceService.getMemberCoupon(memberId); + } +} diff --git a/src/main/java/com/flab/goodchoice/coupon/api/CouponController.java b/src/main/java/com/flab/goodchoice/coupon/api/CouponSaveController.java similarity index 62% rename from src/main/java/com/flab/goodchoice/coupon/api/CouponController.java rename to src/main/java/com/flab/goodchoice/coupon/api/CouponSaveController.java index 2fb10c5..d4fe0ca 100644 --- a/src/main/java/com/flab/goodchoice/coupon/api/CouponController.java +++ b/src/main/java/com/flab/goodchoice/coupon/api/CouponSaveController.java @@ -1,25 +1,20 @@ package com.flab.goodchoice.coupon.api; import com.flab.goodchoice.coupon.application.CouponCommandService; -import com.flab.goodchoice.coupon.application.CouponQueryService; -import com.flab.goodchoice.coupon.dto.CouponInfoResponse; import com.flab.goodchoice.coupon.dto.CreateCouponRequest; import com.flab.goodchoice.coupon.dto.ModifyCouponRequest; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; -import java.util.List; import java.util.UUID; @RequestMapping("/api/coupons") @RestController -public class CouponController { +public class CouponSaveController { - private final CouponQueryService couponQueryService; private final CouponCommandService couponCommandService; - public CouponController(CouponQueryService couponQueryService, CouponCommandService couponCommandService) { - this.couponQueryService = couponQueryService; + public CouponSaveController(CouponCommandService couponCommandService) { this.couponCommandService = couponCommandService; } @@ -28,16 +23,6 @@ public UUID createCoupon(final @RequestBody @Valid CreateCouponRequest createCou return couponCommandService.createCoupon(createCouponRequest); } - @GetMapping - public List getAllCoupons() { - return couponQueryService.getAllCoupons(); - } - - @GetMapping("/{couponToken}") - public CouponInfoResponse getCoupon(@PathVariable final UUID couponToken) { - return couponQueryService.getCoupon(couponToken); - } - @PutMapping("/{couponToken}") public UUID modifyCoupon(@PathVariable final UUID couponToken, final @RequestBody @Valid ModifyCouponRequest modifyCouponRequest) { return couponCommandService.modifyCoupon(couponToken, modifyCouponRequest.couponName(), modifyCouponRequest.stock()); diff --git a/src/main/java/com/flab/goodchoice/coupon/api/CouponUseController.java b/src/main/java/com/flab/goodchoice/coupon/api/CouponUseController.java new file mode 100644 index 0000000..2710eac --- /dev/null +++ b/src/main/java/com/flab/goodchoice/coupon/api/CouponUseController.java @@ -0,0 +1,33 @@ +package com.flab.goodchoice.coupon.api; + +import com.flab.goodchoice.coupon.application.CouponUseService; +import com.flab.goodchoice.coupon.dto.CouponUsedCancelInfoResponse; +import com.flab.goodchoice.coupon.dto.CouponUsedInfoResponse; +import com.flab.goodchoice.coupon.dto.CouponUsedRequest; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +@RequestMapping("/api/coupons") +@RestController +public class CouponUseController { + + private final CouponUseService couponUseService; + + public CouponUseController(CouponUseService couponUseService) { + this.couponUseService = couponUseService; + } + + @PostMapping("/use") + public CouponUsedInfoResponse useCoupon(@RequestBody @Valid CouponUsedRequest request) { + return couponUseService.useCoupon(request.memberId(), request.couponPublishToken(), request.price()); + } + + @PostMapping("/cancel") + public CouponUsedCancelInfoResponse usedCouponCancel(@RequestBody @Valid CouponUsedRequest request) { + return couponUseService.usedCouponCancel(request.memberId(), request.couponPublishToken(), request.price()); + } +} diff --git a/src/main/java/com/flab/goodchoice/coupon/application/CouponIssuanceService.java b/src/main/java/com/flab/goodchoice/coupon/application/CouponIssuanceService.java index c5e59bc..e27ee78 100644 --- a/src/main/java/com/flab/goodchoice/coupon/application/CouponIssuanceService.java +++ b/src/main/java/com/flab/goodchoice/coupon/application/CouponIssuanceService.java @@ -3,11 +3,12 @@ import com.flab.goodchoice.common.aop.LimitedCountLock; import com.flab.goodchoice.coupon.domain.Coupon; import com.flab.goodchoice.coupon.domain.CouponPublish; -import com.flab.goodchoice.coupon.domain.Member; import com.flab.goodchoice.coupon.dto.MemberSpecificCouponResponse; import com.flab.goodchoice.coupon.exception.CouponError; import com.flab.goodchoice.coupon.exception.CouponException; import com.flab.goodchoice.coupon.infrastructure.repositories.AppliedUserRepository; +import com.flab.goodchoice.member.application.MemberQuery; +import com.flab.goodchoice.member.domain.model.Member; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/flab/goodchoice/coupon/application/CouponUseService.java b/src/main/java/com/flab/goodchoice/coupon/application/CouponUseService.java index 451ed86..6dfe291 100644 --- a/src/main/java/com/flab/goodchoice/coupon/application/CouponUseService.java +++ b/src/main/java/com/flab/goodchoice/coupon/application/CouponUseService.java @@ -3,6 +3,8 @@ import com.flab.goodchoice.coupon.domain.*; import com.flab.goodchoice.coupon.dto.CouponUsedCancelInfoResponse; import com.flab.goodchoice.coupon.dto.CouponUsedInfoResponse; +import com.flab.goodchoice.member.application.MemberQuery; +import com.flab.goodchoice.member.domain.model.Member; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/test/java/com/flab/goodchoice/coupon/application/CouponPublishServiceTest.java b/src/test/java/com/flab/goodchoice/coupon/application/CouponPublishServiceTest.java index 63be49c..3840dfe 100644 --- a/src/test/java/com/flab/goodchoice/coupon/application/CouponPublishServiceTest.java +++ b/src/test/java/com/flab/goodchoice/coupon/application/CouponPublishServiceTest.java @@ -2,14 +2,17 @@ import com.flab.goodchoice.coupon.domain.Coupon; import com.flab.goodchoice.coupon.domain.CouponType; -import com.flab.goodchoice.coupon.domain.Member; import com.flab.goodchoice.coupon.domain.State; import com.flab.goodchoice.coupon.dto.MemberSpecificCouponResponse; import com.flab.goodchoice.coupon.exception.CouponException; -import com.flab.goodchoice.coupon.exception.MemberException; import com.flab.goodchoice.coupon.infrastructure.*; import com.flab.goodchoice.coupon.infrastructure.entity.CouponEntity; import com.flab.goodchoice.coupon.infrastructure.repositories.*; +import com.flab.goodchoice.member.application.MemberCommand; +import com.flab.goodchoice.member.application.MemberQuery; +import com.flab.goodchoice.member.domain.model.Member; +import com.flab.goodchoice.member.domain.repositories.MemberRepository; +import com.flab.goodchoice.member.exception.MemberException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test;