Основные поля пользователя:
- Фамилия
- Имя
- Отчество (опционально)
- Номер мобильного телефона
- Адрес электронной почты
- Дата рождения
- Пароль
- ФИО: только буквы русского алфавита, первые буквы - заглавные, не более 50 символов по отдельности.
- Номер мобильного телефона: 11 цифр, начинается с '7'. Один номер - один пользователь.
- Адрес электронной почты: стандартная маска. Один адрес - один пользователь.
- Дата рождения: формат ISO 8601.
- Пароль: от 8 до 64 символов, латинские символы, цифры, знаки
!?
. Обязательно наличие минимум 1 буквы верхнего и нижнего регистра, цифры и знака. Хранение в хешированном виде. - Хранение временной метки создания и обновления полей пользователя.
- Пользователя запрещено удалять из БД.
- Создание пользователя.
- Получение пользователя.
- Редактирование полей пользователя (только ФИО, дата рождения).
- Пользователь имеет неограниченное число сессий.
- Сессия принадлежит только одному пользователю.
- Сессии имеют ограниченный срок действия.
- В БД необходимо хранить все сессии: активные и "протухшие".
- Создание сессии (вход в аккаунт).
- Получение информации о сессии.
- Выход из сессии (выход из аккаунта).
- Время жизни сессии можно настроить при перезапуске приложения.
- Кошельком владеет только один пользователь.
- Изначально каждый пользователь имеет 100 д.е. в кошельке.
- Номер - целое число.
- Баланс - целое число, больше или равно нулю.
- Получение информации о кошельке.
- HESOYAM: с 25% шансом пользователь получает на счёт 10 д.е.
Выражает оплату за услугу между двумя пользователями: продавцом и потребителем. Продавец выставляет потребителю счёт на оплату. После выставления счёта потребитель может его оплатить по номеру. Частичная оплата недопустима. Пока счёт не оплачен, он может быть отменён получателем.
- Номер счёта - UUID, идентифицирует счёт.
- Стоимость услуги - целое число, больше нуля.
- Идентификатор отправителя (продавца, тот кто выставил счёт).
- Идентификатор получателя (покупателя, тот кто оплачивает счёт).
- Комментарий (опционально, не более 250 символов).
- Статус - Оплачен/Неоплачен/Отменён.
- Дата и время выставления счёта - формат ISO 8601.
- Создание счёта на оплату.
- Отмена счёта на оплату отправителем.
- Оплата счёта на оплату получателем.
- Получение информации о счёте на оплату.
- Получение всех выставленных счетов.
- Получение всех счетов к оплате.
- Получение наиболее давнего неоплаченного счёта к оплате.
- Получение общей задолженности по неоплаченным счетам к оплате.
- Добавление фильтров к операциям 5-6:
- По статусам счёта (оплачен/неоплачен/отменён).
- По датам выставления счёта с/по.
- По идентификатору.
Основные поля счёта на денежного перевода:
- Дата и время перевода.
- Сумма.
Переводы могут быть двух типов:
- Перевод пользователю.
- Оплата за услугу.
Перевод совершается в д.е. Выполняется сразу после его создания. Пользователь может совершить перевод в д.е. не более, чем есть у него в кошельке. Хранение временной метки создания переводов.
Перевод пользователю можно осуществить:
- По номеру телефона.
- По номеру кошелька.
Оплатить услугу можно только по её номеру.
- Получение информации о переводе.
- Создание (оно же выполнение) денежного перевода.
- Получение истории переводов с возможностью фильтрации по:
- Типу (входящий/исходящий).
- Статусу (оплачен/неоплачен).
- Пользователю-получателю.