Bank

Форк
0

README.md

Тестовое задание в Effective Mobile.

Дополнительно использовал redis из контейнера для кэша, lombok для удобства. Основной фрэймворк Spring Boot 3. В качастве бд использован был PostgreSQL. Очень надеюсь на положительную оценку! :) Jwt для авторизации.

Формулировка тестового задания:

" Тестовое задание Необходимо написать сервис для “банковских” операций. В нашей системе есть пользователи (клиенты), у каждого клиента есть строго один “банковский аккаунт”, в котором изначально лежит какая-то сумма. Деньги можно переводить между клиентами. На средства также начисляются проценты.

Функциональные требования:

В системе есть пользователи, у каждого пользователя есть строго один “банковский аккаунт”. У пользователя также есть телефон и email. Телефон и или email должен быть минимум один. На “банковском счету” должна быть какая-то изначальная сумма. Также у пользователя должна быть указана дата рождения и ФИО. Для простоты будем считать что в системе нет ролей, только обычные клиенты. Пусть будет служебный апи (с открытым доступом), через который можно заводить новых пользователей в системе, указав логин, пароль, изначальную сумму, телефон и email (логин, телефон и email не должны быть заняты). Баланс счета клиента не может уходит в минус ни при каких обстоятельствах. Пользователь может добавить/сменить свои номер телефона и/или email, если они еще не заняты другими пользователями. Пользователь может удалить свои телефон и/или email. При этом нельзя удалить последний. Остальные данные пользователь не может менять. Сделать АПИ поиска. Искать можно любого клиента. Должна быть фильтрация и пагинация/сортировка. Фильтры: Если передана дата рождения, то фильтр записей, где дата рождения больше чем переданный в запросе. Если передан телефон, то фильтр по 100% сходству. Если передано ФИО, то фильтр по like форматом ‘{text-from-request-param}%’ Если передан email, то фильтр по 100% сходству. Доступ к АПИ должен быть аутентифицирован (кроме служебного апи для создания новых клиентов). Раз в минуту баланс каждого клиента увеличиваются на 5% но не более 207% от начального депозита. Например: Было: 100, стало: 105. Было: 105, стало:110.25.

Реализовать функционал перевода денег с одного счета на другой. Со счета аутентифицированного пользователя, на счёт другого пользователя. Сделать все необходимые валидации и потокобезопасной.

Нефункциональные требования:

Добавить OpenAPI/Swagger Добавить логирование Аутентификация через JWT. Нужно сделать тесты на покрытие функционала трансфера денег.

Стек:

  • Java 17
  • Spring Boot 3
  • База данных PostgreSQL
  • Maven
  • REST API
  • Дополнительные технологии (Redis, ElasticSearch и т.д.) на ваше усмотрение.
  • Фронтенд не нужен

Результат предоставить в виде публичного репозитория на github."

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.