Проект представляет собой сервис управления счетами пользователей и осуществления переводов между этими счетами c
разными валютами, также берется конверсия за перевод в разынх валютах.
Сущности:
Пользователь (User):
Содержит информацию о пользователе, например, идентификатор (id) и другие персональные данные.
Аккаунт (Account):
Представляет собой счет пользователя, который связан с определенным пользователем.
Содержит информацию о балансе счета (balance) и валюте (currency).
Также может содержать ссылку на соответствующего пользователя.
Операция (Operation):
Содержит информацию о денежных операциях, совершаемых на счетах.
Включает в себя тип операции (например, пополнение или снятие), сумму операции и временную метку.
docker-compose up
- Gradle 8.7
- Java 21
- PostgresSQl
- Liquibase
- Open API 3.0
- Docker
Главаная идея была:
-
Получение информации о пользователе по идентификатору (GET):
- Пользователь который хочет первести деньги находит пользователя, которму нужно первести деньги
- URL: http://localhost:8080/user/{id}
- Тело запроса: Отсутствует (GET-запрос)
-
Получение списка аккаунтов пользователя по его идентификатору (GET):
- Далее пользователь может выбрать из своих аккаунтов, аккаунт с которого хочет первести деньги
- URL: http://localhost:8080/account/accountsByUserId/{userId}
- Тело запроса: Отсутствует (GET-запрос)
-
Перевод денег между аккаунтами (POST):
- Далее пользователь совершает перевод, пользователю, которого он выбрал. Если у пользователя есть аккаунт с валютой в которой идет перевод, то первеод осуществляется без комиссии, если например первый пользователь скидывает с аккаунта USD, а у вторго пользователя нету аккаунта с USD, а есть только RUB , то был создан апи для конвертации валют и снимается комиссия(у меня указана 7%)
- URL: http://localhost:8080/account/transfer
- Тело запроса:
{ "fromAccount": 1, // Идентификатор аккаунта, с которого происходит перевод "toUser": 2, // Идентификатор пользователя, которому происходит перевод "amount": 100.00, // Сумма перевода "currency": "USD" // Валюта перевода }