Система лояльности для интернет-магазина Gophermart — HTTP API для управления учётными записями пользователей и их накопительными счетами в рамках программы лояльности интернет-магазина.
Система представляет собой HTTP API со следующими требованиями к бизнес-логике:
- регистрация, аутентификация и авторизация пользователей;
- приём номеров заказов от зарегистрированных пользователей;
- учёт и ведение списка переданных номеров заказов зарегистрированного пользователя;
- учёт и ведение накопительного счёта зарегистрированного пользователя;
- проверка принятых номеров заказов через систему расчёта баллов лояльности;
- начисление за каждый подходящий номер заказа положенного вознаграждения на счёт лояльности пользователя.
Ниже представлена абстрактная бизнес-логика взаимодействия пользователя с системой:
- Пользователь регистрируется в системе лояльности «Гофермарт».
- Пользователь совершает покупку в интернет-магазине «Гофермарт».
- Заказ попадает в систему расчёта баллов лояльности.
- Пользователь передаёт номер совершённого заказа в систему лояльности.
- Система связывает номер заказа с пользователем и сверяет номер с системой расчёта баллов лояльности.
- При наличии положительного расчёта баллов лояльности производится начисление баллов лояльности на счёт пользователя.
- Пользователь списывает доступные баллы лояльности для частичной или полной оплаты последующих заказов в интернет-магазине «Гофермарт».
Примечания: пункт 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-compose up