@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); jdbcTemplate.update("INSERT INTO WITHDRAWAL(ID, CARD_ID, AMOUNT) VALUES (?,?,?)", UUID.randomUUID(), cardId, amount); } }
@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); CardWithdrawn event = creditCard.withdraw(amount); applicationEventPublisher.publishEvent(event); } }
@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); } }
@Transactional public void withdraw(String cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); }
@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); }
@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); withdrawalRepository.save(new Withdrawal(amount, cardId)); }
@Transactional public void withdraw(UUID cardId, BigDecimal amount) { CreditCard creditCard = creditCardRepository.findById(cardId) .orElseThrow(() -> new IllegalStateException("Cannot find card with id " + cardId)); creditCard.withdraw(amount); domainEventPublisher.publish(new CardWithdrawn(cardId, amount)); } }
public void withdraw(WithdrawalCommand command) { repository.apply(command.getCard(),creditCard -> creditCard.withdraw(command)); } }