Каталог состоит из разделов и продуктов.
Раздел может содержать подразделы. Товар может находиться только в одном разделе.
У приложения должно быть rest api для управления данными каталога (CRUD)
Для работы с данными использовать JPA
При проектировании api учитывать что количество разделов на одном уровне не ограничено,
количество уровней вложенности не ограничено, количество товаров в разделе не ограничено.
Все элементы каталога имеют одну модель данных и следующие поля:
Поле | Описание |
---|---|
uuid | Уникальный идентификатор элемента. |
type | Тип элемента. Может быть либо "CATEGORY"(раздел каталога), либо "ITEM"(товар). |
name | Название элемента. |
description | Дополнительная информация об элементе. |
parentItem | Раздел, в который входит элемент. |
referenceItems | Список дочерних элементо. |
properties | Дополнительные свойства элемента(напр. название на других языках). |
POST http://localhost:8080/api/v1/catalog/create
{
"type": "CATEGORY",
"name": "ovoshchi_frukty_zelen",
"properties": {
"label": "Овощи, Фрукты и Зелень"
},
"referenceItems": [
{
"type": "CATEGORY",
"name": "ovoshchi",
"properties": {
"label": "Овощи"
}
}
]
}
Ответ будет примерно следующим
{
"uuid": "5c5d2ce1-4b1e-4503-871c-193ebaa5368d",
"type": "CATEGORY",
"name": "ovoshchi_frukty_zelen",
"referenceItems": [
{
"uuid": "2ea63bec-62dd-444d-967c-f17b22244680",
"type": "CATEGORY",
"name": "ovoshchi",
"properties": {
"label": "Овощи"
}
}
],
"properties": {
"label": "Овощи, Фрукты и Зелень"
}
}
GET http://localhost:8080/api/v1/catalog/list
Ответом будет все дерево каталога
DELETE http://localhost:8080/api/v1/catalog/delete
{
"uuid": "eda72ae1-4ece-4ee8-a293-de0cb8363765"
}
В ответ придет сообщение об успешном удалении
POST http://localhost:8080/api/v1/catalog/update
{
"uuid": "eda72ae1-4ece-4ee8-a293-de0cb8363765",
"type": "CATEGORY",
"name": "ovoshchi_frukty_zelen",
"description": "Раздел со свежими овощами"
}
В ответ придет сообщение об успешном редактировании