#230 Код-ревью сервиса обработки платежей
Сделать код-ревью:
package review;
@Service
public class PaymentService {
@Autowired
private PaymentRepository paymentRepository;
@Autowired
private FeeRepository feeRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private NotificationRestClient notificationRestClient;
@Autowired
private CbrRestClient cbrRestClient;
@Transactional
public void processPayment(double amount, Currency currency, long recipientId) {
double amountInRub = amount * cbrRestClient.doRequest().getRates().get(currency.getCode());
Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = userRepository.findUserById(userId);
Payment payment = new Payment(amountInRub, user, recipientId);
paymentRepository.save(payment);
if (amountInRub < 1000) {
Fee fee = new Fee(amountInRub * 0.015, user);
feeRepository.save(fee);
}
if (amountInRub > 1000) {
Fee fee = new Fee(amountInRub * 0.01, user);
feeRepository.save(fee);
}
if (amountInRub > 5000) {
Fee fee = new Fee(amountInRub * 0.005, user);
feeRepository.save(fee);
}
try {
notificationRestClient.notify(payment);
} catch (Exception e) {
// do nothing
}
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору