-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 사용자는 환불 시에 환불액을 주고 받는다 #67
Conversation
- 환불 수량은 인자에서 제외했습니다 - 포인트 교환 이후 이루어질 task를 todo로 정리했습니다
- 기존에 사용된 P000 에러는 입찰과 환불 모두 사용되어 거래 시로 변경합니다
- 환불 요청 사용자와 거래 내역의 사용자가 동일한 지 검증하기 위해 재정의합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
몇개 의견 드렸읍니다 ㅎㅎ
// TODO 경매 서비스에 환불 요청 | ||
// TODO 환불 요청에 대한 BidHistory 저장 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제안: BidHistory에 bidStatus 필드가 있어서 status를 변경하고 저장하는 로직을 두면 환불 요청에 대한 BidHistory를 저장할 수 있을것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
의견: 경매 서비스 환불 요청 인터페이스가 없다면 임의로 만들어도 괜찮지 않을까요?!
if (buyer.equals(refundTargetBuyer)) { | ||
throw new BadRequestException("환불할 입찰 내역의 구매자만 환불을 할 수 있습니다.", ErrorCode.P003); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
의견: equals도 좋지만 BidHistory memberId만 넘겨주어 비교하는 메소드를 만들어줘도 좋을것 같아요!
BidHistory bidHistory = BidHistory.builder().productName(auctionInfo.productName()).price(price) | ||
.quantity(quantity).bidStatus(BidStatus.BID).seller(savedSeller).buyer(savedBuyer).build(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
의견: 줄 구분이 있으면 좋을것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@Override | ||
public boolean equals(Object o) { | ||
if (this == o) { | ||
return true; | ||
} | ||
if (o == null || getClass() != o.getClass()) { | ||
return false; | ||
} | ||
Member member = (Member) o; | ||
return Objects.equals(id, member.id); | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return Objects.hashCode(id); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@EqualsAndHashCode(of = "id")
조심스럽게 제안해봅니다. ㅎㅎ
Member seller = refundTargetBidHistory.getSeller(); | ||
buyer.chargePoint(price * quantity); | ||
seller.usePoint(price * quantity); | ||
|
||
Member savedBuyer = memberRepository.save(buyer); | ||
Member savedSeller = memberRepository.save(seller); | ||
// TODO 경매 서비스에 환불 요청 | ||
// TODO 환불 요청에 대한 BidHistory 저장 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
좋습니당~ 포인트 수정 이후에 예외가 발생하는 경우 사용할 방어 로직도 나중에 넣어야겠네요!
- todo로 넘긴 입찰 취소 요청, 정보 저장을 뼈대 코드로 구현했습니다 - 입찰 취소 요청 시 거래 내역이 경매 id를 보내줘야 하므로 필드에 추가했습니다
- 이미 환불된 내역일 경우의 예외를 추가했습니다
- signInId를 통한 동일성 검증으로 변경했습니다
…nto feat/60-refund-point-exchange
📄 Summary
검증 로직
구현 로직
🙋🏻 More
close #60