Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
3
Обзор кода в финансовом сервисе
Условие задачи
Вообрази, что ты старший разработчик в финтех‑компании, а младший коллега прислал тебе модуль для проверки. Тебе необходимо выполнить ревью кода.
const val receiptRestClient = ReceiptRestClient()
const val cbrRestClient = CbrRestClient()
@Service
class PaymentService {
@Autowired
private var paymentRepository: PaymentRepository? = null
@Autowired
private lateinit var userRepository: UserRepository
@Transactional
fun doPayment(
amount: Double,
currency: Currency,
recipientId: Long?,
userId: Long
) {
val amountInRub: Double = amount * cbrRestClient.getRates().get(currency.getCode())
val user: User = userRepository.findUserById(userId)!!
val payment: Payment = Payment(amountInRub, user, recipientId)
paymentRepository!!.save(payment)
if (amountInRub < 1000) {
val fee = Fee(amountInRub * 0.015, user)
paymentRepository!!.saveFee(fee)
}
if (amountInRub > 1000) {
val fee = Fee(amountInRub * 0.01, user)
paymentRepository!!.saveFee(fee)
}
if (amountInRub > 5000) {
val fee = Fee(amountInRub * 0.005, user)
paymentRepository!!.saveFee(fee)
}
try {
receiptRestClient.notify(payment)
} catch (t: Throwable) {
// do nothing
}
}
}