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

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

Микросервис availability используется для предоставления информации о наличии товара.

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

В работе микросервиса участвует сущность Остаток (Availability), которая содержит информацию об остатке (id, количество товаров в штуках, id/код/название склада (локации) и др.).

Для работы с микросервисом аутентификация не требуется.

/api/availability/

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

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

По умолчанию

{
  "env": {

    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm", 

    "POSTGRES_DATABASE": "availability",
    "POSTGRES_MIGRATION_USER": "availability_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "availability_user"

  }
}


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

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

 

{
  "env": {

    "AUTH_ENABLED": "флаг_активации_аутентификации",
    "KAFKA_BROKER_ADDRESS": "сокет_брокера_kafka",
    "OAUTH_ECOM_BLACKLIST_TYPE": "информация_о_черном_списке_ECOM_OAuth",

    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_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/availabilities

Request parameters

page - query-параметр: номер страницы
size - query-параметр: размер страницы
sort - query-параметр: сортировка страницы (например, по возрастанию артикула товара)
searchTerm - query-параметр: поисковый запрос
articleId - query-параметр: артикул товара (указанный в фильтре)
locationName - query-параметр: имя локации (указанное в фильтре)
locationCodeList - query-параметр: код локации (указанный в фильтре)
quantityFirstValue - query-параметр: первый числовой параметр фильтра "Количество"
quantityFirstOperator - query-параметр: первый числовой оператор фильтра "Количество" (например, "меньше")
quantityFilterConnectiveType - query-параметр: тип соединения числовых параметров фильтра "Количество" (например, "AND" или "OR")
quantitySecondValue - query-параметр: второй числовой параметр фильтра "Количество"
quantitySecondOperator - query-параметр: второй числовой оператор фильтра "Количество" (например, "больше")

Copy-icon
Response sample
{
  "totalPages": 14,
  "totalElements": 123,
  "first": true,
  "last": true,
  "size": 3,
  "content": [
    {
      "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
      "locationCode": "A007",
      "locationName": "Главный склад F17",
      "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
      "articleId": "1000419DC",
      "quantity": 10,
      "replenishmentTime": 14
    }
  ],
  "number": 0,
  "sort": [
    [
      {
        "direction": "string",
        "nullHandling": "string",
        "ascending": true,
        "property": "string",
        "ignoreCase": true
      }
    ]
  ],
  "numberOfElements": 0,
  "pageable": {
    "pageNumber": 0,
    "pageSize": 0,
    "paged": true,
    "unpaged": true,
    "sort": {
      "direction": "string",
      "nullHandling": "string",
      "ascending": true,
      "property": "string",
      "ignoreCase": true
    },
    "offset": 0
  },
  "empty": true
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список остатков
  • 422 - ошибка, Unprocessable Entity

Получение информации о конкретном остатке по его ID - GET запрос, /v1/availabilities/{id}

Request parameters

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

Copy-icon
Response sample
{
  "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "locationCode": "A007",
  "locationName": "Главный склад D333",
  "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "articleId": "1000419DC",
  "quantity": 10,
  "replenishmentTime": 14
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные о запрашиваемом остатке
  • 404 - ошибка, информация об остатке не найдена
  • 422 - ошибка, отсутствуют обязательные данные (например, id остатка)

Получение списка с кодами локациями (используется для фильтра “Код локации”) - GET запрос, /v1/availabilities/location-codes/unique

Request parameters

page - query-параметр: номер страницы
size - query-параметр: количество локаций в списке

sort - query-параметр: сортировка страницы (например, по возрастанию артикула товара)
term - query-параметр: поисковый запрос

Copy-icon
Response sample
{
  "totalPages": 14,
  "totalElements": 121,
  "first": true,
  "last": true,
  "size": 4,
  "content": [
      "23",
        "22",
        "21",
      "20AB"
  ], "number": 0, "sort": [ [ { "direction": "string", "nullHandling": "string", "ascending": true, "property": "string", "ignoreCase": true } ] ], "numberOfElements": 10, "pageable": { "pageNumber": 1, "pageSize": 10, "paged": true, "unpaged": true, "sort": { "direction": "string", "nullHandling": "string", "ascending": true, "property": "string", "ignoreCase": true }, "offset": 0 }, "empty": true }
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список кодов локаций для фильтра “Код локации”
  • 422 - ошибка, Unprocessable Entity

Получение списка с артикулами (используется для фильтра “Артикул”) - GET запрос, /v1/availabilities/articles/unique

Request parameters

page - query-параметр: номер страницы
size - query-параметр: количество артикулов в списке

sort - query-параметр: сортировка страницы (например, по возрастанию артикула товара)
term - query-параметр: поисковый запрос

Copy-icon
Response sample
{
  "totalPages": 1,
  "totalElements": 10,
  "first": true,
  "last": true,
  "size": 1,
  "content": [
    "1000778DC"
  ],
  "number": 0,
  "sort": [
    [
      {
        "direction": "string",
        "nullHandling": "string",
        "ascending": true,
        "property": "string",
        "ignoreCase": true
      }
    ]
  ],
  "numberOfElements": 1,
  "pageable": {
    "pageNumber": 0,
    "pageSize": 0,
    "paged": true,
    "unpaged": true,
    "sort": {
      "direction": "string",
      "nullHandling": "string",
      "ascending": true,
      "property": "string",
      "ignoreCase": true
    },
    "offset": 0
  },
  "empty": true
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список артикулов для фильтра “Артикул”
  • 422 - ошибка, Unprocessable Entity

Получение списка остатков - POST запрос, /v1/availabilities/total

Request body sample

[//массив articleId товаров]

Copy-icon
Response sample
[
  {
    "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "locationCode": "A007",
    "locationName": "Главный склад D333",
    "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "articleId": "1000419DC",
    "quantity": 10,
    "replenishmentTime": 14
  }
]
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список остатков
  • 422 - ошибка, Unprocessable Entity

Получение списка остатков с аутентификацией - POST запрос, /v2/availabilities/total

Request body sample
[//массив articleId товаров]
Copy-icon
Response sample
[
  {
    "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "locationCode": "A007",
    "locationName": "Главный склад D333",
    "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "articleId": "1000419DC",
    "quantity": 10,
    "replenishmentTime": 14
  }
]
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список остатков
  • 422 - ошибка, Unprocessable Entity

Получение отфильтрованного списка остатков - POST запрос, /v1/availabilities/list

Request body sample
{
  "searchTerm": "string",
  "articleId": "string",
  "locationName": "string",
  "locationCodeList": [
    "string"
  ],
  "quantityFirstValue": 0,
  "quantityFirstOperator": "EQ",
  "quantityFilterConnectiveType": "AND",
  "quantitySecondValue": 0,
  "quantitySecondOperator": "EQ",
  "articleIds": [
    "string"
  ]
}
Copy-icon
Response sample
[
  {
    "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "locationCode": "A007",
    "locationName": "Главный склад D333",
    "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "articleId": "1000419DC",
    "quantity": 10,
    "replenishmentTime": 14
  }
]
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список остатков с учетом примененных фильтров
  • 422 - ошибка, Unprocessable Entity

Создание списка остатков PUT запрос, /v1/availabilities/list

Request body sample
[
  {
    "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "locationCode": "A007",
    "locationName": "Central Warehouse",
    "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
    "articleId": "1000419DC",
    "quantity": 10,
    "replenishmentTime": 14
  }
]
Copy-icon
Response sample
{
  "created": 0,
  "updated": 0,
  "rejected": 0,
  "errors": [
    "string"
  ]
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, возвращен список остатков с учетом примененных фильтров
  • 422 - ошибка, Unprocessable Entity

Создание нового остатка - POST запрос, /v2/availabilities

Request body sample
{
  "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "locationCode": "A007",
  "locationName": "Главный склад F17",
  "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "articleId": "1000419DC",
  "quantity": 10,
  "replenishmentTime": 14
}
Copy-icon
Response sample
{
  "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "locationCode": "A007",
  "locationName": "Главный склад F17",
  "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "articleId": "1000419DC",
  "quantity": 10,
  "replenishmentTime": 14
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, новый остаток создан
  • 400 - ошибка, не удалось создать остаток
  • 409 - ошибка, остаток уже существует
  • 422 - ошибка, невалидные параметры

Редактирование остатка - PATCH запрос, /v2/availabilities/{availabilityId}

Request parameters

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

Copy-icon
Request body sample
{
  "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "locationCode": "A007",
  "locationName": "Главный склад F17",
  "id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "articleId": "1000419DC",
  "quantity": 10,
  "replenishmentTime": 14
}
Copy-icon
Response sample

{
    "id": "bfb9565e-2df2-4621-850f-02c4490c3af8",
    "articleId": "1001626DC",
    "quantity": 5,
    "replenishmentTime": 10,
    "locationId": "6d162d69-76db-470d-be15-2d226e6afb19",
    "locationCode": "677F",
    "locationName": "Главный склад F17"
}

Copy-icon
Response codes
  • 204 - операция успешна, остаток обновлен и выдана обновленная информация по остатку
  • 404 - ошибка, остаток не найден
  • 409 - ошибка, остаток не может быть отредактирован
  • 422 - ошибка, невалидные данные в запросе

Обновление данных о локации остатка - PATCH запрос, /v1/availabilities/location-info

Request body sample
{
  "locationId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "locationCode": "A007",
  "locationName": "Главный склад D333"
}
Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 202.

Response codes
  • 202 - операция выполнена успешно
  • 422 - ошибка, Unprocessable Entity

Удаление остатка по его ID - DELETE запрос, /v1/availabilities/{availabilityId}

Request parameters

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

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, остаток удален
  • 404 - ошибка, не удалось найти нужный остаток
  • 422 - ошибка, Unprocessable Entity

Связанные статьи

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