Skip to content
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

Merged
merged 11 commits into from
Aug 13, 2024

Conversation

minseok-oh
Copy link
Collaborator

@minseok-oh minseok-oh commented Aug 13, 2024

📄 Summary

  • 검증 로직

    • 요청한 사용자가 구매자가 맞는가?
    • 요청한 구매자가 거래 내역의 구매자가 맞는가?
  • 구현 로직

    • 판매자는 환불액 (상품 금액 * 구매 수량)만큼 포인트를 차감한다
    • 구매자는 환불액 (상품 금액 * 구매 수량)만큼 포인트를 얻는다

🙋🏻 More

  • 추후 구현해야 할 부분들을 TODO로 정리했습니다!
  • 추후 동시성 이슈를 해결해야 하는 기능입니다!

close #60

- 환불 수량은 인자에서 제외했습니다
- 포인트 교환 이후 이루어질 task를 todo로 정리했습니다
- 기존에 사용된 P000 에러는 입찰과 환불 모두 사용되어 거래 시로 변경합니다
- 환불 요청 사용자와 거래 내역의 사용자가 동일한 지 검증하기 위해 재정의합니다
@minseok-oh minseok-oh added the FEATURE 새로운 기능 또는 변경 label Aug 13, 2024
@minseok-oh minseok-oh requested a review from a team August 13, 2024 04:26
@minseok-oh minseok-oh self-assigned this Aug 13, 2024
Copy link
Member

@HiiWee HiiWee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

몇개 의견 드렸읍니다 ㅎㅎ

Comment on lines 86 to 87
// TODO 경매 서비스에 환불 요청
// TODO 환불 요청에 대한 BidHistory 저장
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제안: BidHistory에 bidStatus 필드가 있어서 status를 변경하고 저장하는 로직을 두면 환불 요청에 대한 BidHistory를 저장할 수 있을것 같아요!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의견: 경매 서비스 환불 요청 인터페이스가 없다면 임의로 만들어도 괜찮지 않을까요?!

Comment on lines 73 to 74
if (buyer.equals(refundTargetBuyer)) {
throw new BadRequestException("환불할 입찰 내역의 구매자만 환불을 할 수 있습니다.", ErrorCode.P003);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의견: equals도 좋지만 BidHistory memberId만 넘겨주어 비교하는 메소드를 만들어줘도 좋을것 같아요!

Comment on lines 37 to 38
BidHistory bidHistory = BidHistory.builder().productName(auctionInfo.productName()).price(price)
.quantity(quantity).bidStatus(BidStatus.BID).seller(savedSeller).buyer(savedBuyer).build();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의견: 줄 구분이 있으면 좋을것 같아요!

yudonggeun
yudonggeun previously approved these changes Aug 13, 2024
Copy link
Contributor

@yudonggeun yudonggeun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines 46 to 61
@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);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@EqualsAndHashCode(of = "id")

조심스럽게 제안해봅니다. ㅎㅎ

Comment on lines 80 to 87
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 저장
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋습니당~ 포인트 수정 이후에 예외가 발생하는 경우 사용할 방어 로직도 나중에 넣어야겠네요!

- todo로 넘긴 입찰 취소 요청, 정보 저장을 뼈대 코드로 구현했습니다
- 입찰 취소 요청 시 거래 내역이 경매 id를 보내줘야 하므로 필드에 추가했습니다
- 이미 환불된 내역일 경우의 예외를 추가했습니다
@yudonggeun yudonggeun merged commit 74dae60 into dev Aug 13, 2024
@yudonggeun yudonggeun deleted the feat/60-refund-point-exchange branch August 13, 2024 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FEATURE 새로운 기능 또는 변경
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] 사용자는 환불 시에 환불액을 주고 받는다
4 participants