Сервис каталога
Общая информация
Сервис предоставляет функционал для работы с каталогом товаров и групп, включая получение данных о группах, товарах и их дополнительных характеристиках.
Эндпоинты
1. Получение полного каталога
Описание: Возвращает весь каталог, включая список групп и товаров.
- URL:
/api/v1/catalog - Метод:
GET - Тело запроса: отсутствует
- Ответы:
200 OK: Успешный ответ с данными каталога.{ "products": [ { "id": "string", "name": "string", "nameTo": "string", "code": "string", "parentGroup": "string", "price": "number", "oldPrice": "number", "composition": [ { "name": "string", "description": "string", "image": "string" } ], "weight": "number", "countInSet": "number", "count": "number", "isSamaraHidden": "boolean", "isNovokujbyshevskHidden": "boolean", "isTolyattiHidden": "boolean", "maxPerPositionInOrder": "number", "order": "number", "energyAmount": "number", "fiberAmount": "number", "fatAmount": "number", "carbohydrateAmount": "number", "additionalInfo": { "filters": [ { "name": "string", "code": "string" } ], "allergens": [ { "name": "string", "code": "string" } ] }, "slug": "string", "likesCount": "number", "isLiked": "boolean", "description": "string", "image": "string", "createdAt": "string" } ], "groups": [ { "id": "string", "name": "string", "slug": "string", "parentGroup": "string", "isIncludedInMenu": "number", "order": "number", "additionalInfo": { "isServiceGroup": "boolean" }, "isGroupModifier": "number", "image": "string", "nameTo": "string" } ] }500 Internal Server Error: Что-то пошло не так.
2. Получение списка групп
Описание: Возвращает список групп каталога.
- URL:
/api/v1/catalog/group - Метод:
GET - Тело запроса: отсутствует
- Ответы:
200 OK: Список групп.[ { "id": "string", "name": "string", "slug": "string", "parentGroup": "string", "isIncludedInMenu": "number", "order": "number", "additionalInfo": { "isServiceGroup": "boolean" }, "isGroupModifier": "number", "image": "string", "nameTo": "string" } ]500 Internal Server Error: Что-то пошло не так.
3. Получение списка товаров
Описание: Возвращает список товаров каталога.
- URL:
/api/v1/catalog/product - Метод:
GET - Тело запроса: отсутствует
- Ответы:
200 OK: Список товаров.[ { "id": "string", "name": "string", "nameTo": "string", "code": "string", "parentGroup": "string", "price": "number", "oldPrice": "number", "composition": [ { "name": "string", "description": "string", "image": "string" } ], "weight": "number", "countInSet": "number", "count": "number", "isSamaraHidden": "boolean", "isNovokujbyshevskHidden": "boolean", "isTolyattiHidden": "boolean", "maxPerPositionInOrder": "number", "order": "number", "energyAmount": "number", "fiberAmount": "number", "fatAmount": "number", "carbohydrateAmount": "number", "additionalInfo": { "filters": [ { "name": "string", "code": "string" } ], "allergens": [ { "name": "string", "code": "string" } ] }, "slug": "string", "likesCount": "number", "isLiked": "boolean", "description": "string", "image": "string", "createdAt": "string" } ]500 Internal Server Error: Что-то пошло не так.
Логика работы
Сервисные методы
- getCatalogCache: Кэширует и возвращает текущий каталог, включая товары и группы.
- getGroupsAll: Получает все группы каталога, сортирует их и обрабатывает дополнительные данные.
- getProductsAll: Получает все товары каталога, фильтрует и обрабатывает дополнительные данные.
- getProductBySlug(slug): Возвращает товар по его slug.
- getProductById(id): Возвращает товар по его ID.
Дополнительная информация
Мониторинг каталога
Класс CatalogMonitor из модуля init.catalog.js предоставляет функционал для отслеживания изменений в каталоге. Основные методы:
- start(): Запускает мониторинг каталога.
- stop(): Останавливает мониторинг каталога.
- checkCatalogUpdate(): Проверяет обновления каталога и обновляет хеш при изменениях.