Слайд 2Описание проекта
Проект SMarket представляет собой интернет-магазин товаров повседневного спроса.
Платформа имеет удобный интерфейс,
![Описание проекта Проект SMarket представляет собой интернет-магазин товаров повседневного спроса. Платформа имеет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-1.jpg)
где все товары разделены по категориям.
Благодаря простой навигации, пользователю не составит труда определиться с выбором товара.
Слайд 3Перейдя по интересующей категории, пользователь может ознакомиться со списком товаров, а если
![Перейдя по интересующей категории, пользователь может ознакомиться со списком товаров, а если](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-2.jpg)
товар его заинтересовал он может ознакомиться с подробным описанием.
Администратор магазина со своей стороны может добавлять товары, изменить цену на товар, назначить или удалить цену, сняв товар с продажи.
В дальнейшем планируется добавить функционал покупки и резервирования товара.
Слайд 6Техническая часть
Интернет-магазин SMarket - проект, основанный на микросервисной архитектуре. Каждый микросервис выполняет
![Техническая часть Интернет-магазин SMarket - проект, основанный на микросервисной архитектуре. Каждый микросервис](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-5.jpg)
определённый функционал. Проект включает в себя пять сервисов взаимосвязанных между собой через REST, а также через брокер сообщений Apache Kafka.
Сервис обеспечивающий работу с товарами (Stock-Service)
Сервис отвечающий за ценообразование товаров (Price-Service)
Слайд 7 Сервис обеспечивающий работу с авторизацией пользователей (User-Service)
Фронтовое приложение для вывода товаров
![Сервис обеспечивающий работу с авторизацией пользователей (User-Service) Фронтовое приложение для вывода товаров](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-6.jpg)
(Market-Front-App)
Фронтовое приложения для администрирования цен, добавления/удаления товаров (Admin-Front-App)
Слайд 8Stock-service
Spring Boot приложение с подключением к базе данных PostgreSQL .
Сервис хранит описание
![Stock-service Spring Boot приложение с подключением к базе данных PostgreSQL . Сервис](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-7.jpg)
товаров: цена, название, категория, количество, производитель и др. Позволяет создавать, редактировать, резервировать, удалять товары, получать информацию о товарах.
Подключение к базе данных происходит через стандарт JDBC. Структура базы данных создается при помощи Liquibase.
Данный сервис использует программного брокера сообщений Apache Kafka для оперативного уведомления об удалении, добавлении, изменении состояния товара.
Слайд 9API сервиса
GET /stock/item?itemId={itemId}
GET /stock/item/all/byCategory?categoryId={categoryId}
GET /stock/сategory/all
GET /stock/item/all
POST /stock/item
POST /stock/reserve?itemId={itemId}&count={count}
POST /stock/unreserve?itemId={itemId}&count={count}
PUT /stock/item
DELETE /stock/item?itemId={itemId}
Ссылка
![API сервиса GET /stock/item?itemId={itemId} GET /stock/item/all/byCategory?categoryId={categoryId} GET /stock/сategory/all GET /stock/item/all POST /stock/item](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-8.jpg)
на репозиторий:
Слайд 10Price-service
Сервис отвечающий за ценообразование товаров.
Spring Boot приложение с подключением к базе
![Price-service Сервис отвечающий за ценообразование товаров. Spring Boot приложение с подключением к](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-9.jpg)
данных PostgreSQL с использованием библиотеки Hibernate.
Структура базы данных создается при помощи Liquibase.
Данный сервис использует программного брокера сообщений Apache Kafka для оперативного уведомления об удалении, добавлении, изменении состояния цены на товар.
Слайд 11API сервиса
GET /price?itemId={itemId} (возвращает цену с заданным ID товара )
DELETE /price?itemId={itemId} (удаляет
![API сервиса GET /price?itemId={itemId} (возвращает цену с заданным ID товара ) DELETE](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-10.jpg)
цену с заданным ID товара)
PUT /price?itemId={itemId} (обновляет цену с заданным ID товара)
POST /price/create (создает новую цену товара в БД)
PUT /price/all (обновляет цены списка товаров)
GET /price/all (возвращает цены списка товаров)
Ссылка на репозиторий:
Слайд 12User-service
Сервис представляет собой Spring Boot приложение, которое обеспечивает работу с учётными записями
![User-service Сервис представляет собой Spring Boot приложение, которое обеспечивает работу с учётными](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-11.jpg)
пользователей.
Информация о пользователях хранится в базе данных PostgreSQL. Взаимодействие с базой данных осуществляется посредством Spring Data.
Слайд 13API сервиса
GET /auth/user/byUserId?userId={userId}
GET /auth/user/byLogin?login={login}
DELETE /auth/user/user?userId={userId}
POST /auth/user
PUT /auth/user
GET /auth/user/all
GET /auth/user/all/byRoles?roles={roles}
Ссылка на репозиторий:
![API сервиса GET /auth/user/byUserId?userId={userId} GET /auth/user/byLogin?login={login} DELETE /auth/user/user?userId={userId} POST /auth/user PUT /auth/user](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-12.jpg)
Слайд 14Market-front-app
Фронтовое приложение реализует пользовательский интерфейс и позволяет клиенту ознакомиться со списком товаров.
![Market-front-app Фронтовое приложение реализует пользовательский интерфейс и позволяет клиенту ознакомиться со списком](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-13.jpg)
Источником данных является stock-service и price-service, взаимодействие осуществляется через REST.
Данный сервис оперативно реагирует на изменение списка товаров и цен на них;
Слайд 15GET market/category/all
GET market/item/all/byCategory?categoryId={categoryId}
Ссылка на репозиторий:
https://gitlab.com/martynets.aleksandr/market-front-app
API сервиса
![GET market/category/all GET market/item/all/byCategory?categoryId={categoryId} Ссылка на репозиторий: https://gitlab.com/martynets.aleksandr/market-front-app API сервиса](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-14.jpg)
Слайд 16Admin-front-app
Фронтовое приложения для администрирования цен, добавления/удаления товаров. Источником данных является stock-service и
![Admin-front-app Фронтовое приложения для администрирования цен, добавления/удаления товаров. Источником данных является stock-service](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-15.jpg)
price-service, взаимодействие осуществляется через REST.
Данный сервис оперативно реагирует на изменение списка товаров и цен на них, вычитывая сообщения из Apache Kafka;
Вход в административную панель осуществляется с использованием Spring Security.
Слайд 17API сервиса
GET admin/item/all
PUT admin/item/price?itemId={itemId}&price={price}
DELETE admin/item/price?itemId={itemId}
POST admin/item
Ссылка на репозиторий:
https://gitlab.com/martynets.alesandr/smarket-admin/-/tree/develop/admin-front-app
![API сервиса GET admin/item/all PUT admin/item/price?itemId={itemId}&price={price} DELETE admin/item/price?itemId={itemId} POST admin/item Ссылка на репозиторий: https://gitlab.com/martynets.alesandr/smarket-admin/-/tree/develop/admin-front-app](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-16.jpg)
Слайд 18stock-service
price-service
admin-front-app
market-front-app
user-service
Price
Item
User
Kafka
Kafka
Kafka
Kafka
JDBC
Spring
Data
Hibernate
Item Cache
Price Cache
Item Cache
Price Cache
SMarket
Spring Security
Архитектура
![stock-service price-service admin-front-app market-front-app user-service Price Item User Kafka Kafka Kafka Kafka](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-17.jpg)
Слайд 19Используемые технологии
JDBC
Liquibase
Kafka
JUnit
Mockito
Git
![Используемые технологии JDBC Liquibase Kafka JUnit Mockito Git](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-18.jpg)
Слайд 20Spring Boot
Spring MVC
Spring Rest Template
Spring Data
Spring Security
Hibernate
![Spring Boot Spring MVC Spring Rest Template Spring Data Spring Security Hibernate](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-19.jpg)
Слайд 21Команда проекта
Куратор проекта:
Мартынец Александр
Участники:
![Команда проекта Куратор проекта: Мартынец Александр Участники:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-20.jpg)
Слайд 22Участие в проекте «SMarket»
Stock-service
![Участие в проекте «SMarket» Stock-service](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1073143/slide-21.jpg)