Skip to content

Conversation

@essaysir
Copy link
Contributor

작업내용

구현 내용

  • 환불 구현 내용
@Transactional
	public void handleRefundPurchase(String transactionId) {
		PurchasedPencil pencil = purchasedPencilFinder.findByTransactionId(transactionId)
			.orElseThrow(() -> new EntityNotFoundException("PurchasedPencil not found with transactionId: " + transactionId));

		log.info("Refund processed for transactionId: {}", transactionId);

		pencil.markAsRefund();

		PencilAccount buyerAccount = pencilAccountFinder.findByMemberWithLock(pencil.getMember());
		executeRefund(buyerAccount, pencil.getPurchaseQuantity(), pencil.getPrice());

	}

	public void executeRefund(PencilAccount buyerAccount, long pencilQuantity, long price) {
		long purchasedToUse = Math.min(buyerAccount.getPurchasedBalance(), pencilQuantity);
		buyerAccount.decreasePurchasedBalance(purchasedToUse);

		long remaining = pencilQuantity - purchasedToUse;
		long acquiredToUse = Math.min(buyerAccount.getAcquiredBalance(), remaining);
		buyerAccount.decreaseAcquiredBalance(acquiredToUse);

		buyerAccount.increaseTotalRefundAmount(price);
		// 남은 수량이 0이 아닐 경우 로그 기록
		if (remaining - acquiredToUse > 0) {
			log.warn("Not enough balance to fully refund {} pencils. Refunded only {}.", pencilQuantity, (purchasedToUse + acquiredToUse));
		}
	}

essaysir added 10 commits May 27, 2025 22:00
- pencilAccount 를 통해 해당 값 가져오도록 수정
# Conflicts:
#	src/main/java/umc/th/juinjang/api/pencil/service/PencilCommandService.java
#	src/main/java/umc/th/juinjang/api/pencil/service/PencilQueryService.java
#	src/main/java/umc/th/juinjang/domain/pencil/acquired/repository/AcquiredPencilRepository.java
#	src/test/java/umc/th/juinjang/api/pencil/service/PencilQueryServiceTest.java
# Conflicts:
#	src/main/java/umc/th/juinjang/api/apple/service/AppleService.java
#	src/main/java/umc/th/juinjang/api/pencil/service/PencilCommandService.java
@essaysir essaysir merged commit 82f766e into dev Jun 25, 2025
1 check passed
@essaysir essaysir deleted the feat/#327 branch June 26, 2025 10:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants