Skip to content

ШИФТ Интенсив Backend - Проект по созданию электронного кошелька "Картошка".

Notifications You must be signed in to change notification settings

bgdnlmzn/potato_wallet

Repository files navigation

Система "Картошка"

Пользователь

Описание

Основные поля пользователя:

  • Фамилия
  • Имя
  • Отчество (опционально)
  • Номер мобильного телефона
  • Адрес электронной почты
  • Дата рождения
  • Пароль

Требования

  • ФИО: только буквы русского алфавита, первые буквы - заглавные, не более 50 символов по отдельности.
  • Номер мобильного телефона: 11 цифр, начинается с '7'. Один номер - один пользователь.
  • Адрес электронной почты: стандартная маска. Один адрес - один пользователь.
  • Дата рождения: формат ISO 8601.
  • Пароль: от 8 до 64 символов, латинские символы, цифры, знаки !?. Обязательно наличие минимум 1 буквы верхнего и нижнего регистра, цифры и знака. Хранение в хешированном виде.
  • Хранение временной метки создания и обновления полей пользователя.
  • Пользователя запрещено удалять из БД.

Операции с пользователем

  • Создание пользователя.
  • Получение пользователя.
  • Редактирование полей пользователя (только ФИО, дата рождения).

Сессия

Описание

  • Пользователь имеет неограниченное число сессий.
  • Сессия принадлежит только одному пользователю.
  • Сессии имеют ограниченный срок действия.
  • В БД необходимо хранить все сессии: активные и "протухшие".

Операции с сессией

  • Создание сессии (вход в аккаунт).
  • Получение информации о сессии.
  • Выход из сессии (выход из аккаунта).

Дополнительно (необязательные требования)

  • Время жизни сессии можно настроить при перезапуске приложения.

Кошелёк

Описание

  • Кошельком владеет только один пользователь.
  • Изначально каждый пользователь имеет 100 д.е. в кошельке.

Основные поля кошелька

  • Номер - целое число.
  • Баланс - целое число, больше или равно нулю.

Операции с кошельком

  • Получение информации о кошельке.

Функционал рулетки (дополнительный эндпоинт)

  • HESOYAM: с 25% шансом пользователь получает на счёт 10 д.е.

Счёт на оплату

Описание

Выражает оплату за услугу между двумя пользователями: продавцом и потребителем. Продавец выставляет потребителю счёт на оплату. После выставления счёта потребитель может его оплатить по номеру. Частичная оплата недопустима. Пока счёт не оплачен, он может быть отменён получателем.

Основные поля счёта на оплату (услуги)

  • Номер счёта - UUID, идентифицирует счёт.
  • Стоимость услуги - целое число, больше нуля.
  • Идентификатор отправителя (продавца, тот кто выставил счёт).
  • Идентификатор получателя (покупателя, тот кто оплачивает счёт).
  • Комментарий (опционально, не более 250 символов).
  • Статус - Оплачен/Неоплачен/Отменён.
  • Дата и время выставления счёта - формат ISO 8601.

Операции со счётом на оплату

  1. Создание счёта на оплату.
  2. Отмена счёта на оплату отправителем.
  3. Оплата счёта на оплату получателем.
  4. Получение информации о счёте на оплату.
  5. Получение всех выставленных счетов.
  6. Получение всех счетов к оплате.

Дополнительно (необязательные требования)

  • Получение наиболее давнего неоплаченного счёта к оплате.
  • Получение общей задолженности по неоплаченным счетам к оплате.
  • Добавление фильтров к операциям 5-6:
    • По статусам счёта (оплачен/неоплачен/отменён).
    • По датам выставления счёта с/по.
    • По идентификатору.

Денежный перевод

Описание

Основные поля счёта на денежного перевода:

  • Дата и время перевода.
  • Сумма.

Переводы могут быть двух типов:

  • Перевод пользователю.
  • Оплата за услугу.

Требования

Перевод совершается в д.е. Выполняется сразу после его создания. Пользователь может совершить перевод в д.е. не более, чем есть у него в кошельке. Хранение временной метки создания переводов.

Перевод пользователю

Перевод пользователю можно осуществить:

  • По номеру телефона.
  • По номеру кошелька.

Оплата за услугу

Оплатить услугу можно только по её номеру.

Операции с денежными переводами

  • Получение информации о переводе.
  • Создание (оно же выполнение) денежного перевода.
  • Получение истории переводов с возможностью фильтрации по:
    • Типу (входящий/исходящий).
    • Статусу (оплачен/неоплачен).
    • Пользователю-получателю.

About

ШИФТ Интенсив Backend - Проект по созданию электронного кошелька "Картошка".

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published