Микросервис store

В статье описываются функции, логика работы, конфигурация и методы микросервиса store.

Микросервис store предоставляет функциональность для управления локациями (складами).

Доступ к сервису предоставляется по запросу.

В работе микросервиса используется сущность Location (Локация), которая содержит данные локации (ID, название, адрес, координаты, телефон, код, расписание, статус и др.).

При обращении к микросервису store через API аутентификация и авторизация не требуются.

/api/store/

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "LOGGING_LEVEL": "уровень_логирования",
    "POSTGRES_DATABASE": "store",
    "POSTGRES_MIGRATION_USER": "store_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "store_user",
    "SERVER_PORT": "порт_сервера"
  }
}


Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
  "env": {

    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ECOM_ISSUER_URI": "url_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "POSTGRES_HOST": "адрес_хоста",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль"
  }
}


Copy-icon

Методы микросервиса Copy-icon

  • Получение страницы с локациями - GET запрос, /v1/locations
Request parameters

page, size - query-параметр: номер и размер страницы заказов
sort - query-параметр: сортировка по полю
code - query-параметр, необязательный: фильтр по коду локации

Copy-icon
Response sample

{
    "content": [
        {
            "id": "01e50a75-202f-46bf-a8e3-9491ec0407f7",
            "name": "Главный склад",
            "region": "Беларусь",
            "city": "Минск",
            "postcode": "223112",
            "address": "улица Немига 3",
            "office": "76",
            "phone": "+375 (29) 111-22-55",
            "businessType": "Ритейл",
            "coordinates": "хорошие",
            "schedule": "круглосуточно, кроме 03:00-04:00",
            "throughput": 10000.08,
            "assemblyHours": 10000.99,
            "code": "A003-01",
            "onlineOrders": true,
            "status": "ACTIVE"
        },
        {
            "id": "6d162d69-76db-470d-be15-2d226e6afb19",
            "name": "Главный склад F17",
            "region": "Россия",
            "city": "Самара",
            "postcode": "13324567",
            "address": "ул Арбат, д 11",
            "office": "Главный офис",
            "phone": "+879 04 55 063 ",
            "businessType": "Продажа",
            "coordinates": "",
            "schedule": "",
            "throughput": 0.00,
            "assemblyHours": 0.00,
            "code": "677F",
            "onlineOrders": true,
            "status": "INACTIVE"
        }
    ],
    "pageable": {
        "sort": {
            "unsorted": true,
            "sorted": false,
            "empty": true
        },
        "pageNumber": 0,
        "pageSize": 2,
        "offset": 0,
        "unpaged": false,
        "paged": true
    },
    "totalPages": 7,
    "totalElements": 13,
    "last": false,
    "first": true,
    "numberOfElements": 2,
    "sort": {
        "unsorted": true,
        "sorted": false,
        "empty": true
    },
    "size": 2,
    "number": 0,
    "empty": false
}

Copy-icon
Response codes

200 - операция выполнена успешно, получена страница с локациями

  • Получение локации по ее ID - GET запрос, /v1/locations/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор локации

Copy-icon
Response sample

{
    "id": "6d162d69-76db-470d-be15-2d226e6afb19",
    "name": "Главный склад F17",
    "region": "Россия",
    "city": "Самара",
    "postcode": "13324567",
    "address": "ул Арбат, д 11",
    "office": "Главный офис",
    "phone": "+879 04 55 063 ",
    "businessType": "Продажа",
    "coordinates": "",
    "schedule": "",
    "throughput": 0.00,
    "assemblyHours": 0.00,
    "code": "677F",
    "onlineOrders": true,
    "status": "INACTIVE"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные локации
  • 404 - ошибка, локация не найдена
  • Получение отфильтрованного списка локаций - GET запрос, /v1/locations/filter
Request parameters

code - query-параметр, необязательный: фильтрация по коду локации

Copy-icon
Response sample

[
    {
        "id": "6d162d69-76db-470d-be15-2d226e6afb19",
        "name": "Главный склад F17",
        "region": "Россия",
        "city": "Самара",
        "postcode": "13324567",
        "address": "ул Арбат, д 11",
        "office": "Главный офис",
        "phone": "+879 04 55 063 ",
        "businessType": "Продажа",
        "coordinates": "",
        "schedule": "",
        "throughput": 0.00,
        "assemblyHours": 0.00,
        "code": "677F",
        "onlineOrders": true,
        "status": "INACTIVE"
    }
]

Copy-icon
Response codes

200 - получен список локаций с учетом примененного фильтра

  • Получение всех доступных локаций - GET запрос, /v1/locations/all
Response sample

[
    {
        "id": "a9efb6d6-4af5-4c2d-8af6-888777040e1d",
        "name": "Склад 11-1",
        "region": "Россия",
        "city": "москва",
        "postcode": "222340",
        "address": "ул Арбат, д 11",
        "office": "Главный офис",
        "phone": "+879 04 55 063 x",
        "businessType": "Продажа",
        "coordinates": "\"55° 45’ 20.9916\"\"N, 37° 37’ 3.6228\"\"E\"",
        "schedule": "0.00ч-0.00ч ",
        "throughput": 0.00,
        "assemblyHours": 33.00,
        "code": "11-1",
        "onlineOrders": true,
        "status": "ACTIVE"
    },
    {
        "id": "a0f84bda-5e3d-4568-825b-680946defe58",
        "name": "Главный склад D333",
        "region": "Россия",
        "city": "Москва",
        "postcode": "",
        "address": "ул Арбат, д 11",
        "office": "",
        "phone": "+879 04 55 063",
        "businessType": "Продажа",
        "coordinates": "\"55° 45’ 20.9916\"\"N, 37° 37’ 3.6228\"\"E\"",
        "schedule": "8.00-19.00",
        "throughput": 22.50,
        "assemblyHours": 1.50,
        "code": "20AB",
        "onlineOrders": true,
        "status": "ACTIVE"
    },
    {
        "id": "6d162d69-76db-470d-be15-2d226e6afb19",
        "name": "Главный склад F17",
        "region": "Россия",
        "city": "Самара",
        "postcode": "13324567",
        "address": "ул Арбат, д 11",
        "office": "Главный офис",
        "phone": "+879 04 55 063 ",
        "businessType": "Продажа",
        "coordinates": "",
        "schedule": "",
        "throughput": 0.00,
        "assemblyHours": 0.00,
        "code": "677F",
        "onlineOrders": true,
        "status": "INACTIVE"
    }
]

Copy-icon
Response codes

200 - операция успешно выполнена, получен список всех локаций, заведенных в интернет-магазине

  • Получение отфильтрованного списка локаций - POST запрос, /v1/locations/list
Request body sample

{
    "searchTerm": "11-1"
}

Copy-icon
Response sample

[
    {
        "id": "a9efb6d6-4af5-4c2d-8af6-888777040e1d",
        "name": "Склад 11-1",
        "region": "Россия",
        "city": "москва",
        "postcode": "222340",
        "address": "ул Арбат, д 11",
        "office": "Главный офис",
        "phone": "+879 04 55 063 x",
        "businessType": "Продажа",
        "coordinates": "\"55° 45’ 20.9916\"\"N, 37° 37’ 3.6228\"\"E\"",
        "schedule": "0.00ч-0.00ч ",
        "throughput": 0.00,
        "assemblyHours": 33.00,
        "code": "11-1",
        "onlineOrders": true,
        "status": "ACTIVE"
    }
]

Copy-icon
Response codes

200 - операция выполнена успешно, получен отфильтрованный список локаций

  • Создание локации - POST запрос, /v1/locations
Request body sample

{
  "name": "Склад г. Сочи",
  "region": "Россия",
  "city": "Сочи",
  "postcode": "",
  "address": "ул. Набережная",
  "office": "",
  "phone": "+76528390283",
  "businessType": "",
  "coordinates": "",
  "schedule": "10:00-18:00",
  "throughput": 0,
  "assemblyHours": 0,
  "code": "123321",
  "onlineOrders": true,
  "status": "INACTIVE"
}

Copy-icon
Response sample

{
    "id": "70ee8f4f-fc07-4a44-8cfb-6546ad7d63f2",
    "name": "Склад г. Сочи",
    "region": "Россия",
    "city": "Сочи",
    "postcode": "",
    "address": "ул. Набережная",
    "office": "",
    "phone": "+76528390283",
    "businessType": "",
    "coordinates": "",
    "schedule": "10:00-18:00",
    "throughput": 0,
    "assemblyHours": 0,
    "code": "123321",
    "onlineOrders": true,
    "status": "INACTIVE"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, локация создана
  • 422 - недостаточно данных или они не валидны
  • Обновление локации - PATCH запрос, /v1/locations/{locationId}
Request parameters

locationID - path-параметр, обязательный: идентификатор локации для редактирование

Copy-icon
Request body sample

{
  "name": "Склад г. Сочи",
  "region": "Россия",
  "city": "Сочи",
  "postcode": "",
  "address": "ул. Новая д. 1",
  "office": "",
  "phone": "+7111111",
  "businessType": "",
  "coordinates": "",
  "schedule": "10:00-15:00",
  "throughput": 0,
  "assemblyHours": 0,
  "code": "123001",
  "onlineOrders": true,
  "status": "INACTIVE"
}

Copy-icon
Response sample

{
    "id": "70ee8f4f-fc07-4a44-8cfb-6546ad7d63f2",
    "name": "Склад г. Сочи",
    "region": "Россия",
    "city": "Сочи",
    "postcode": "",
    "address": "ул. Новая д. 1",
    "office": "",
    "phone": "+7111111",
    "businessType": "",
    "coordinates": "",
    "schedule": "10:00-15:00",
    "throughput": 0,
    "assemblyHours": 0,
    "code": "123001",
    "onlineOrders": true,
    "status": "INACTIVE"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, данные локации обновлены
  • 422 - недостаточно данных или они не валидны