#161 Рефакторинг контроллера перевода денег

Компании:
Ростелеком
Темы:
SpringSpring BootТранзакцииКод ревью

Сделать код-ревью:

@RestController
public class AccountController {
    @Autowired
    public AccountDAOImpl accountDAOImpl;
    @Autowired
    public KafkaNotificationService kafkaNotificationService;

    @PutMapping("/transfer")
    public Long transferMoney(@RequestParam Double money, @RequestParam long fromId, @RequestParam long toId) {
        var accountFrom = accountDAOImpl.getAccountById(fromId);
        var accountTo = accountDAOImpl.getAccountById(toId);

        if (accountFrom.balance - money < 0) {
            throw new RuntimeException();
        }

        accountFrom.balance = accountFrom.balance - money;
        accountTo.balance = accountTo.balance + money;

        long transactionId = accountDAOImpl.transfer(accountFrom, accountTo);

        kafkaNotificationService.export(transactionId);

        return transactionId;
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти