Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shumlesha/kartoshkawallet
Сервис электронного кошелька, выполненный в рамках Интенсива ШИФТ 2024
https://github.com/shumlesha/kartoshkawallet
docker-compose grafana java junit jwt-authentication mapstruct mockito monolith-architecture prometheus spring-boot spring-security springdoc-openapi-ui
Last synced: 28 days ago
JSON representation
Сервис электронного кошелька, выполненный в рамках Интенсива ШИФТ 2024
- Host: GitHub
- URL: https://github.com/shumlesha/kartoshkawallet
- Owner: shumlesha
- Created: 2024-07-11T11:42:49.000Z (4 months ago)
- Default Branch: shumkov/develop
- Last Pushed: 2024-07-13T13:37:42.000Z (4 months ago)
- Last Synced: 2024-10-11T06:04:07.230Z (28 days ago)
- Topics: docker-compose, grafana, java, junit, jwt-authentication, mapstruct, mockito, monolith-architecture, prometheus, spring-boot, spring-security, springdoc-openapi-ui
- Language: Java
- Homepage:
- Size: 867 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Некоторые из технологий
- Java 21
- Spring 6
- Spring Boot 3.3.1
- Spring Security (JWT-based)
- Mapstruct
- PostgreSQL + Flyway
- JUnit + Mockito
- Prometheus + Grafana
- Docker
- Springdoc (Swagger UI)---
# Картошка"Картошка" - это отечественный электронный кошелек, который позволяет оплачивать услуги, делать денежные переводы в рамках системы. Ваша задача написать серверную часть, удовлетворяющую "Картошке".
## Пользователь
### Описание
Основные поля пользователя:
- Фамилия
- Имя
- Отчество (опционально)
- Номер мобильного телефона
- Адрес электронной почты
- Дата рождения
- Пароль### Особенности:
- ФИО допускается только буквы русского алфавита. Первые буквы - заглавные. Не более 50 символов по отдельности.
- Номер мобильного телефона - Формат телефона: 11 цифр, начинается с '7'. К номеру телефона может быть привязан только один пользователь.
- Адрес электронной почты - стандартная маска. К электронной почте может быть привязан только один пользователь.
- Дата рождения - дата в ISO 8601.### Особые требования к паролю:
- от 8 до 64 символов
- Только латинские символы, цифры, знаки только !?
- Обязательно наличие минимум 1 буквы верхнего и нижнего регистра, цифры и знака.
- Хранение исключительно в БД, в хешированном виде, алгоритм - на усмотрение разработки.### Хранение данных:
- К требованиям хранения пользователей относится хранение временной метки (timestamp) создания и обновления полей пользователя. Пользователя запрещено удалять из БД.## Операции с пользователем
- Создание пользователя
- Получение пользователя
- Редактирование полей пользователя (только ФИО, дата рождения)## Сессия
### Описание
Сессия принадлежит только одному пользователю. Сессии имеют ограниченный срок действия.
### Операции с сессией
- Создание сессии (вход в аккаунт)
- Получение информации о сессии
- Выход из сессии (выход из аккаунта)## Кошелёк
### Описание
Кошельком владеет только один пользователь. Изначально каждый пользователь имеет 100 д.е. в кошельке.
### Операции с кошельком
- Получение информации о кошельке
### Дополнительно
- Реализовать функционал рулетки:
- HESOYAM: с 25% шансом пользователь получает на счёт 10 д.е.## Счёт на оплату
### Описание
Выражает оплату за услугу между двумя пользователями: продавцом и потребителем.
### Основные поля счёта на оплату:
- Номер счёта - UUID, идентифицирует счёт
- Стоимость услуги - целое число, больше нуля
- Идентификатор отправителя (продавца)
- Идентификатор получателя (покупателя)
- Комментарий (опционально)
- Статус - Оплачен/Неоплачен/Отменён
- Дата и время выставления счёта в ISO 8601 формате### Операции со счётом на оплату
- Создание счёта на оплату
- Отмена счёта на оплату отправителем
- Оплата счёта на оплату получателем
- Получение информации о счёте на оплату
- Получение всех выставленных счетов
- Получение всех счетов к оплате### Дополнительно
- Реализовать дополнительные операции:
- Получение наиболее давнего неоплаченного счёта к оплате
- Получение общей задолженности по неоплаченным счетам к оплате
- Добавить фильтры к операциям. Например:
- По статусам счёта (оплачен/неоплачен/отменён)
- По датам выставления счёта с/по
- По идентификатору## Денежный перевод
### Описание
Переводы между пользователями и оплата за услуги.
### Основные поля счёта на денежного перевода:
- Дата и время перевода
- Сумма### Операции с денежными переводами
- Получение информации о переводе
- Создание (выполнение) денежного перевода
- Получение истории переводов: требуется возможность фильтрации по:
- Типу (входящий/исходящий)
- Статусу (оплачен/не оплачен)
- Пользователю-получателю---
## Деплой- Установить проект с репозитория
- Ввести ```docker-compose up -d``` в терминале в папке проекта
- Доступные ресурсы:
- Swagger: http://localhost:8080/swagger-ui/index.html
- Prometheus: http://localhost:9090/
- Grafana: http://localhost:3000