Skip to content

Commit

Permalink
[#22] refactor : CouponPublish -> CouponIssue 로 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
zzangoobrother committed Jun 27, 2023
1 parent e272f9e commit 780201b
Show file tree
Hide file tree
Showing 25 changed files with 182 additions and 182 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.flab.goodchoice.coupon.api;

import com.flab.goodchoice.coupon.application.CouponIssueService;
import com.flab.goodchoice.coupon.dto.CouponPublishRequest;
import com.flab.goodchoice.coupon.dto.CouponIssueRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -20,12 +20,12 @@ public CouponIssueController(CouponIssueService couponIssueService) {
}

@PostMapping("/publish")
public UUID createCouponPublish(@RequestBody CouponPublishRequest couponPublishRequest) {
return couponIssueService.couponIssuance(couponPublishRequest.memberId(), couponPublishRequest.couponToken());
public UUID createCouponPublish(@RequestBody CouponIssueRequest couponIssueRequest) {
return couponIssueService.couponIssuance(couponIssueRequest.memberId(), couponIssueRequest.couponToken());
}

@PostMapping("/publish/redisson")
public UUID createCouponPublishRedissonAop(@RequestBody CouponPublishRequest couponPublishRequest) {
public UUID createCouponPublishRedissonAop(@RequestBody CouponIssueRequest couponPublishRequest) {
return couponIssueService.couponIssuanceRedissonAop(couponPublishRequest.memberId(), couponPublishRequest.couponToken());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.flab.goodchoice.coupon.application;

import com.flab.goodchoice.coupon.domain.CouponIssue;

public interface CouponIssueCommand {
CouponIssue save(CouponIssue couponIssue);

void modify(CouponIssue couponIssue);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.UUID;

public interface CouponPublishExistCheck {
public interface CouponIssueExistCheck {

boolean couponIssueCheck(Long memberId, UUID couponToken);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.flab.goodchoice.coupon.application;

import com.flab.goodchoice.coupon.domain.CouponIssue;

import java.util.List;
import java.util.UUID;

public interface CouponIssueQuery {
List<CouponIssue> getCouponIssue(Long memberId);

CouponIssue getCouponIssue(UUID couponIssueToken, Long memberId);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.flab.goodchoice.coupon.application;

import com.flab.goodchoice.coupon.domain.CouponPublish;
import com.flab.goodchoice.coupon.domain.CouponIssue;
import com.flab.goodchoice.coupon.dto.MemberSpecificCouponResponse;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -11,16 +11,16 @@
@Service
public class CouponIssueRetrievalService {

private final CouponPublishQuery couponPublishQuery;
private final CouponIssueQuery couponIssueQuery;

public CouponIssueRetrievalService(CouponPublishQuery couponPublishQuery) {
this.couponPublishQuery = couponPublishQuery;
public CouponIssueRetrievalService(CouponIssueQuery couponIssueQuery) {
this.couponIssueQuery = couponIssueQuery;
}

public List<MemberSpecificCouponResponse> getMemberCoupon(Long memberId) {
List<CouponPublish> couponPublishes = couponPublishQuery.getCouponIssue(memberId);
return couponPublishes.stream()
.map(couponPublish -> MemberSpecificCouponResponse.of(couponPublish.getCoupon()))
List<CouponIssue> couponIssues = couponIssueQuery.getCouponIssue(memberId);
return couponIssues.stream()
.map(couponIssue -> MemberSpecificCouponResponse.of(couponIssue.getCoupon()))
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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.CouponIssue;
import com.flab.goodchoice.coupon.exception.CouponError;
import com.flab.goodchoice.coupon.exception.CouponException;
import com.flab.goodchoice.coupon.infrastructure.repositories.AppliedUserRepository;
Expand All @@ -20,35 +20,35 @@ public class CouponIssueService {
private final MemberQuery memberQuery;
private final CouponQuery couponQuery;
private final CouponCommand couponCommand;
private final CouponPublishCommand couponPublishCommand;
private final CouponPublishExistCheck couponPublishExistCheck;
private final CouponIssueCommand couponIssueCommand;
private final CouponIssueExistCheck couponIssueExistCheck;
private final AppliedUserRepository appliedUserRepository;

public CouponIssueService(MemberQuery memberQuery, CouponQuery couponQuery, CouponCommand couponCommand, CouponPublishCommand couponPublishCommand,
CouponPublishExistCheck couponPublishExistCheck, AppliedUserRepository appliedUserRepository) {
public CouponIssueService(MemberQuery memberQuery, CouponQuery couponQuery, CouponCommand couponCommand, CouponIssueCommand couponIssueCommand,
CouponIssueExistCheck couponIssueExistCheck, AppliedUserRepository appliedUserRepository) {
this.memberQuery = memberQuery;
this.couponQuery = couponQuery;
this.couponCommand = couponCommand;
this.couponPublishCommand = couponPublishCommand;
this.couponPublishExistCheck = couponPublishExistCheck;
this.couponIssueCommand = couponIssueCommand;
this.couponIssueExistCheck = couponIssueExistCheck;
this.appliedUserRepository = appliedUserRepository;
}

public UUID couponIssuance(final Long memberId, final UUID couponToken) {
Member member = getMember(memberId);

boolean existsCoupon = couponPublishExistCheck.couponIssueCheck(memberId, couponToken);
boolean existsCoupon = couponIssueExistCheck.couponIssueCheck(memberId, couponToken);
if (existsCoupon) {
throw new CouponException(CouponError.NOT_DUPLICATION_COUPON);
}

Coupon coupon = couponQuery.getCouponInfoLock(couponToken);
CouponPublish couponPublish = saveCouponPublish( member, coupon);
CouponIssue couponPublish = saveCouponIssue( member, coupon);

coupon.useCoupon();
couponCommand.modify(coupon);

return couponPublish.getCouponPublishToken();
return couponPublish.getCouponIssueToken();
}

@LimitedCountLock(key = "key", waitTime = 20L)
Expand All @@ -62,17 +62,17 @@ public UUID couponIssuanceRedissonAop(final Long memberId, final UUID key) {
}

Coupon coupon = couponQuery.getCouponInfo(key);
CouponPublish couponPublish = saveCouponPublish(member, coupon);
CouponIssue couponPublish = saveCouponIssue(member, coupon);

coupon.useCoupon();
couponCommand.modify(coupon);

return couponPublish.getCouponPublishToken();
return couponPublish.getCouponIssueToken();
}

private CouponPublish saveCouponPublish(Member member, Coupon coupon) {
CouponPublish couponPublish = new CouponPublish(UUID.randomUUID(), member, coupon, false);
return couponPublishCommand.save(couponPublish);
private CouponIssue saveCouponIssue(Member member, Coupon coupon) {
CouponIssue couponIssue = new CouponIssue(UUID.randomUUID(), member, coupon, false);
return couponIssueCommand.save(couponIssue);
}

private Member getMember(Long memberId) {
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
public interface CouponQuery {
List<Coupon> getCoupons();

Coupon getCouponInfo(Long couponId);
Coupon getCoupon(Long couponId);

Coupon getCouponInfo(UUID couponToken);
Coupon getCoupon(UUID couponToken);

Coupon getCouponInfoLock(@Param("couponToken") UUID couponToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public List<CouponRetrievalResponse> getAllCoupons() {
}

public CouponRetrievalResponse getCoupon(final UUID couponToken) {
Coupon coupon = couponQuery.getCouponInfo(couponToken);
Coupon coupon = couponQuery.getCoupon(couponToken);
return CouponRetrievalResponse.of(coupon);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,6 @@ public UUID removeCoupon(UUID couponToken) {
}

private Coupon getCoupon(UUID couponToken) {
return couponQuery.getCouponInfo(couponToken);
return couponQuery.getCoupon(couponToken);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,23 @@
public class CouponUseService {

private final MemberQuery memberQuery;
private final CouponPublishQuery couponPublishQuery;
private final CouponPublishCommand couponPublishCommand;
private final CouponIssueQuery couponIssueQuery;
private final CouponIssueCommand couponIssueCommand;
private final CouponUseHistoryQuery couponUseHistoryQuery;
private final CouponUseHistoryCommand couponUseHistoryCommand;

public CouponUseService(MemberQuery memberQuery, CouponPublishQuery couponPublishQuery, CouponPublishCommand couponPublishCommand,
public CouponUseService(MemberQuery memberQuery, CouponIssueQuery couponIssueQuery, CouponIssueCommand couponIssueCommand,
CouponUseHistoryQuery couponUseHistoryQuery, CouponUseHistoryCommand couponUseHistoryCommand) {
this.memberQuery = memberQuery;
this.couponPublishQuery = couponPublishQuery;
this.couponPublishCommand = couponPublishCommand;
this.couponIssueQuery = couponIssueQuery;
this.couponIssueCommand = couponIssueCommand;
this.couponUseHistoryQuery = couponUseHistoryQuery;
this.couponUseHistoryCommand = couponUseHistoryCommand;
}

public CouponUsedInfoResponse useCoupon(final Long memberId, final UUID couponPublishToken, final int price) {
public CouponUsedInfoResponse useCoupon(final Long memberId, final UUID couponIssueToken, final int price) {
Member member = getMemberById(memberId);
CouponPublish couponPublish = couponPublishQuery.getCouponPublishInfo(couponPublishToken, memberId);
CouponIssue couponPublish = couponIssueQuery.getCouponIssue(couponIssueToken, memberId);

Coupon coupon = couponPublish.getCoupon();

Expand All @@ -42,26 +42,26 @@ public CouponUsedInfoResponse useCoupon(final Long memberId, final UUID couponPu
couponUseHistoryCommand.save(new CouponUseHistory(member, coupon, price, discountPrice, UseState.USE));

couponPublish.use();
couponPublishCommand.modify(couponPublish);
couponIssueCommand.modify(couponPublish);

return new CouponUsedInfoResponse(couponPublishToken, price, discountPrice, resultPrice);
return new CouponUsedInfoResponse(couponIssueToken, price, discountPrice, resultPrice);
}

public CouponUsedCancelInfoResponse usedCouponCancel(final Long memberId, final UUID couponPublishToken, final int price) {
public CouponUsedCancelInfoResponse usedCouponCancel(final Long memberId, final UUID couponIssueToken, final int price) {
Member member = getMemberById(memberId);
CouponPublish couponPublish = couponPublishQuery.getCouponPublishInfo(couponPublishToken, memberId);
CouponIssue couponPublish = couponIssueQuery.getCouponIssue(couponIssueToken, memberId);
Coupon coupon = couponPublish.getCoupon();

CouponUseHistory couponUseHistory = couponUseHistoryQuery.getCouponUseHistory(member, coupon);
couponUseHistory.cancel();
couponUseHistoryCommand.modify(couponUseHistory);

couponPublish.cancel();
couponPublishCommand.modify(couponPublish);
couponIssueCommand.modify(couponPublish);

CouponCalculator couponCalculator = coupon.getCouponType().couponCalculator(price, coupon.getDiscountValue());

return new CouponUsedCancelInfoResponse(couponPublishToken, price, couponCalculator.usedCancelCalculation());
return new CouponUsedCancelInfoResponse(couponIssueToken, price, couponCalculator.usedCancelCalculation());
}

private Member getMemberById(Long memberId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@

@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class CouponPublish {
public class CouponIssue {
private Long id;
private UUID couponPublishToken;
private UUID couponIssueToken;
private Member member;
private Coupon coupon;
private boolean usedYn;
private LocalDateTime createdAt;
private LocalDateTime usedAt;

public CouponPublish(UUID couponPublishToken, Member member, Coupon coupon, boolean usedYn) {
this.couponPublishToken = couponPublishToken;
public CouponIssue(UUID couponIssueToken, Member member, Coupon coupon, boolean usedYn) {
this.couponIssueToken = couponIssueToken;
this.member = member;
this.coupon = coupon;
this.usedYn = usedYn;
}

public CouponPublish(Long id, UUID couponPublishToken, Member member, Coupon coupon, boolean usedYn) {
this(couponPublishToken, member, coupon, usedYn);
public CouponIssue(Long id, UUID couponIssueToken, Member member, Coupon coupon, boolean usedYn) {
this(couponIssueToken, member, coupon, usedYn);
this.id = id;
}

@Builder
public CouponPublish(Long id, UUID couponPublishToken, Member member, Coupon coupon, boolean usedYn, LocalDateTime createdAt, LocalDateTime usedAt) {
this(couponPublishToken, member, coupon, usedYn);
public CouponIssue(Long id, UUID couponIssueToken, Member member, Coupon coupon, boolean usedYn, LocalDateTime createdAt, LocalDateTime usedAt) {
this(couponIssueToken, member, coupon, usedYn);
this.id = id;
this.createdAt = createdAt;
this.usedAt = usedAt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.UUID;

public record CouponPublishRequest(
public record CouponIssueRequest(
Long memberId,
UUID couponToken
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

import java.util.UUID;

public record CouponInfoResponse(
public record CouponRetrievalResponse(
UUID couponToken,
String couponName,
int stock,
State state
) {

public static CouponInfoResponse of (Coupon coupon) {
return new CouponInfoResponse(coupon.getCouponToken(), coupon.getCouponName(), coupon.getStock(), coupon.getState());
public static CouponRetrievalResponse of (Coupon coupon) {
return new CouponRetrievalResponse(coupon.getCouponToken(), coupon.getCouponName(), coupon.getStock(), coupon.getState());
}
}
Loading

0 comments on commit 780201b

Please sign in to comment.