Skip to content

Commit

Permalink
[#22] refactor : 쿠폰 controller 역할에 맞게 클래스 분리 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
zzangoobrother committed Jun 20, 2023
1 parent 2fcd17a commit 252c4be
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 43 deletions.
Original file line number Diff line number Diff line change
@@ -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<CouponInfoResponse> getAllCoupons() {
return couponQueryService.getAllCoupons();
}

@GetMapping("/{couponToken}")
public CouponInfoResponse getCoupon(@PathVariable final UUID couponToken) {
return couponQueryService.getCoupon(couponToken);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}

Expand All @@ -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<MemberSpecificCouponResponse> 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());
}
}
Original file line number Diff line number Diff line change
@@ -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<MemberSpecificCouponResponse> getMemberCoupon(@PathVariable Long memberId) {
return couponIssuanceService.getMemberCoupon(memberId);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}

Expand All @@ -28,16 +23,6 @@ public UUID createCoupon(final @RequestBody @Valid CreateCouponRequest createCou
return couponCommandService.createCoupon(createCouponRequest);
}

@GetMapping
public List<CouponInfoResponse> 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());
Expand Down
Original file line number Diff line number Diff line change
@@ -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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 252c4be

Please sign in to comment.