Skip to content

Stern-Ritter/gophermart

Repository files navigation

Система лояльности для интернет-магазина Gophermart

Описание проекта

Система лояльности для интернет-магазина Gophermart — HTTP API для управления учётными записями пользователей и их накопительными счетами в рамках программы лояльности интернет-магазина.

Функциональность

Система представляет собой HTTP API со следующими требованиями к бизнес-логике:

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

Ниже представлена абстрактная бизнес-логика взаимодействия пользователя с системой:

  1. Пользователь регистрируется в системе лояльности «Гофермарт».
  2. Пользователь совершает покупку в интернет-магазине «Гофермарт».
  3. Заказ попадает в систему расчёта баллов лояльности.
  4. Пользователь передаёт номер совершённого заказа в систему лояльности.
  5. Система связывает номер заказа с пользователем и сверяет номер с системой расчёта баллов лояльности.
  6. При наличии положительного расчёта баллов лояльности производится начисление баллов лояльности на счёт пользователя.
  7. Пользователь списывает доступные баллы лояльности для частичной или полной оплаты последующих заказов в интернет-магазине «Гофермарт».

Примечания: пункт 2 представлен как гипотетический и не реализован в данной работе; пункт 3 реализован в системе расчёта баллов лояльности и не реализован в данной работе.

Накопительная система лояльности «Гофермарт» предоставляет следующие HTTP-хендлеры:

  • POST /api/user/register — регистрация пользователя;
  • POST /api/user/login — аутентификация пользователя;
  • POST /api/user/orders — загрузка пользователем номера заказа для расчёта;
  • GET /api/user/orders — получение списка загруженных пользователем номеров заказов, статусов их обработки и информации о начислениях;
  • GET /api/user/balance — получение текущего баланса счёта баллов лояльности пользователя;
  • POST /api/user/balance/withdraw — запрос на списание баллов с накопительного счёта в счёт оплаты нового заказа;
  • GET /api/user/withdrawals — получение информации о выводе средств с накопительного счёта пользователем.

Использованные технологии

  • Go,
  • Rest Api,
  • Middleware,
  • Compress,
  • Hash,
  • Crypto,
  • PostgreSQL,
  • Goose,
  • Unit tests,
  • Docker,
  • OpenAPI.

Запуск проекта

В папке проекта в терминале необходимо выполнить команду:

Запуск проекта в docker:

docker-compose up

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages