Skip to content

valeriyek/plus-smart-home-tech

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Home Technologies — Интернет-магазин

О проекте

Проект включает полный набор модулей для управления товарами, корзиной, складом, заказами, оплатой и доставкой.

Архитектура построена на Spring Cloud (Eureka, Config Server, Gateway) с использованием паттернов Database per Service и взаимодействия через Feign-клиенты.


Реализованные сервисы

Shopping Store (витрина товаров)

  • Создание, редактирование и деактивация товаров (статусы ACTIVE/DEACTIVATED).
  • Просмотр товаров по категориям с пагинацией.
  • Категории: CONTROL, SENSORS, LIGHTING.
  • Доступность товара обозначается перечислением: ENDED, FEW, ENOUGH, MANY.

Shopping Cart (корзина пользователя)

  • Просмотр текущего содержимого корзины.
  • Добавление, удаление и изменение количества товаров.
  • Деактивация корзины.

Warehouse (склад)

  • Приём и добавление товаров на склад.
  • Проверка доступности товаров по корзине.
  • Управление запасами, возврат товаров.
  • Получение адреса склада (ADDRESS_1 или ADDRESS_2).

Order (управление заказами)

  • Создание и управление заказами с множеством статусов: NEW, ON_PAYMENT, DELIVERED, PAYMENT_FAILED и др.
  • Расчёт стоимости заказа, включая товары, доставку и НДС.
  • Сборка заказа, оплата, доставка, возвраты.
  • Интеграция с другими сервисами через Feign.

Payment (эмулятор платёжного шлюза)

  • Расчёт стоимости товаров и итоговой суммы с учётом НДС и доставки.
  • Управление статусами оплаты: PENDING, SUCCESS, FAILED.
  • Информирование сервиса заказов о статусах оплаты.

Delivery (адаптер доставки)

  • Управление доставками: сохранение данных, статусов (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.
  • Итоговая сумма включает НДС и стоимость доставки.
  • Отслеживаются статусы оплаты и передаются в сервис заказов.

Доставка

  • Используется унифицированный формат адресов (страна, город, улица, дом, квартира).
  • Стоимость рассчитывается по формуле с учётом склада, хрупкости, веса и объёма.
  • Управляет статусами доставки и уведомляет сервисы о результатах.

Склад

  • Управляет запасами и бронированием товаров.
  • Обрабатывает сборку заказа и передачу на доставку.
  • Принимает возвраты и обновляет остатки.

Запуск и использование

  1. Запустите Eureka Server на порту 8761.
  2. Запустите Config Server с внешними конфигурациями для всех сервисов.
  3. Запустите все сервисы: shopping-store, shopping-cart, warehouse, order, payment, delivery.
  • Каждый сервис стартует на случайном порту (server.port=0), регистрируется в Eureka.
  1. Запустите API Gateway и убедитесь, что маршруты /api/v1/... корректно проксируют запросы.
  2. Для проверки балансировки запустите несколько инстансов сервиса доставки и убедитесь в распределении запросов.

Feign-клиенты

  • Сервис order вызывает методы delivery, payment, warehouse.
  • Сервис delivery взаимодействует с order и warehouse.
  • Сервис payment вызывает методы order и shopping-store.
  • Общие DTO и Feign-интерфейсы расположены в interaction-api и используются всеми сервисами.

Особенности реализации

  • DTO-объекты используются для обмена данными между сервисами.
  • Статусы заказов, оплат и доставок строго управляются согласно бизнес-логике.
  • Товары и корзины деактивируются через смену статуса без удаления из БД.
  • Стоимость доставки рассчитывается по заданному алгоритму с множеством параметров.
  • Конфигурация сервисов обеспечена через Spring Cloud Config.
  • Load Balancer в Gateway гарантирует устойчивость и масштабируемость.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published