Проект включает полный набор модулей для управления товарами, корзиной, складом, заказами, оплатой и доставкой.
Архитектура построена на Spring Cloud (Eureka, Config Server, Gateway) с использованием паттернов Database per Service и взаимодействия через Feign-клиенты.
- Создание, редактирование и деактивация товаров (статусы ACTIVE/DEACTIVATED).
- Просмотр товаров по категориям с пагинацией.
- Категории: CONTROL, SENSORS, LIGHTING.
- Доступность товара обозначается перечислением: ENDED, FEW, ENOUGH, MANY.
- Просмотр текущего содержимого корзины.
- Добавление, удаление и изменение количества товаров.
- Деактивация корзины.
- Приём и добавление товаров на склад.
- Проверка доступности товаров по корзине.
- Управление запасами, возврат товаров.
- Получение адреса склада (ADDRESS_1 или ADDRESS_2).
- Создание и управление заказами с множеством статусов: NEW, ON_PAYMENT, DELIVERED, PAYMENT_FAILED и др.
- Расчёт стоимости заказа, включая товары, доставку и НДС.
- Сборка заказа, оплата, доставка, возвраты.
- Интеграция с другими сервисами через Feign.
- Расчёт стоимости товаров и итоговой суммы с учётом НДС и доставки.
- Управление статусами оплаты: PENDING, SUCCESS, FAILED.
- Информирование сервиса заказов о статусах оплаты.
- Управление доставками: сохранение данных, статусов (CREATED, IN_PROGRESS, DELIVERED и др.).
- Расчёт стоимости доставки с учётом адресов, веса, объёма и хрупкости.
- Связь со складом и заказами, обновление статусов доставки.
- Service Discovery: Eureka на порту 8761, сервисы зарегистрированы под именами
shopping-store
,shopping-cart
,warehouse
,order
,payment
,delivery
. - Externalized Configuration: Spring Cloud Config Server с централизованными настройками.
- API Gateway: Spring Cloud Gateway с маршрутами
/api/v1/{service}/...
, балансировка нагрузки между инстансами. - Обмен данными: REST + Feign-клиенты с общими DTO в модуле
interaction-api
. - Базы данных: отдельные БД для каждого сервиса (Database per Service).
- Создаются из корзины пользователя.
- Статусы заказов отражают все этапы: сборка, оплата, доставка, ошибки, возвраты.
- Взаимодействие с сервисами оплаты, доставки и склада.
- Стоимость товаров запрашивается из
shopping-store
. - Итоговая сумма включает НДС и стоимость доставки.
- Отслеживаются статусы оплаты и передаются в сервис заказов.
- Используется унифицированный формат адресов (страна, город, улица, дом, квартира).
- Стоимость рассчитывается по формуле с учётом склада, хрупкости, веса и объёма.
- Управляет статусами доставки и уведомляет сервисы о результатах.
- Управляет запасами и бронированием товаров.
- Обрабатывает сборку заказа и передачу на доставку.
- Принимает возвраты и обновляет остатки.
- Запустите Eureka Server на порту 8761.
- Запустите Config Server с внешними конфигурациями для всех сервисов.
- Запустите все сервисы:
shopping-store
,shopping-cart
,warehouse
,order
,payment
,delivery
.
- Каждый сервис стартует на случайном порту (
server.port=0
), регистрируется в Eureka.
- Запустите API Gateway и убедитесь, что маршруты
/api/v1/...
корректно проксируют запросы. - Для проверки балансировки запустите несколько инстансов сервиса доставки и убедитесь в распределении запросов.
- Сервис
order
вызывает методыdelivery
,payment
,warehouse
. - Сервис
delivery
взаимодействует сorder
иwarehouse
. - Сервис
payment
вызывает методыorder
иshopping-store
. - Общие DTO и Feign-интерфейсы расположены в
interaction-api
и используются всеми сервисами.
- DTO-объекты используются для обмена данными между сервисами.
- Статусы заказов, оплат и доставок строго управляются согласно бизнес-логике.
- Товары и корзины деактивируются через смену статуса без удаления из БД.
- Стоимость доставки рассчитывается по заданному алгоритму с множеством параметров.
- Конфигурация сервисов обеспечена через Spring Cloud Config.
- Load Balancer в Gateway гарантирует устойчивость и масштабируемость.