Сервис для работы с онлайн-картами представляет собой сервис, подключенный к БД, содержащей информацию о картах и клиентах. Предназначен для быстрого получения сведений о картах и клиентах с кассы, чтобы исключить прогрузку больших объемов данных на кассу.

Сервис предназначен для работы с БД Dictionaries. Чтобы исключить дополнительную нагрузку на сервер и сделать работу более эффективной и стабильной, необходимо настроить репликацию основной БД artixcsAll для таблиц cardTemp, cardgroupTemp и clientTemp и сделать views, соответствующие этим таблицам в Dictionaries.

Установка и настройка сервиса

Установка сервиса производится командой:

aptitude install artixcs-online-card

При работе с сервисом онлайн-карт используется basic аутентификация, логин и пароль задаются в файле настроек.

Файл настройки:

НазваниеТип данныхОписание
dataSource.driverClassNameстроковый
dataSource.urlстроковыйАдрес подключения к БД
dataSource.usernameстроковыйЛогин для подключения к БД
dataSource.passwordстроковыйПароль для подключения к БД
hibernate.dialectстроковый
rest.userстроковыйЛогин для авторизации по REST
rest.passwordстроковыйПароль для авторизации по REST
server.portчисловойПорт, на котором запущен REST-сервис
Пример настройки
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://192.169.1.200:3306/dictionariesAll
dataSource.username=netroot
dataSource.password=netroot
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
rest.user=admin
rest.password=admin
server.port=8096

REST API

В запросах не может быть указано более одной карты/номера телефона.

При запросе карты по номеру карты/телефона в ответ будет передаваться карта с клиентом, у которого заполнено поле personaloffer с актуальными на время запроса индивидуальными предложениями. Если для клиента не найдено ни одно актуальное индивидуальное предложение, то вернется пустое значение.

Получение данных по номеру карты

Для получения данных о карте, группе карт и клиенте по номеру карты необходимо направить запрос типа GET на url:

http://{host}:{port}/v1/cards/number/{cardNumber}
Пример ответа
{
  "idcard": "ff808181687e0bf001687e0f3e740007",
  "cardgroup":    {
     "idcardgroup": 1,
     "name": "группа карт",
     "cardmode": 0,
     "lenbeg": 0,
     "lenend": 0,
     "regexpattern": "маска",
     "inputmask": 31,
     "regexrule": "правило",
     "bonususecase": 0,
     "searchrule": 0
  },
  "client":    {
     "idclient": "ff808181687e0bf001687e0ebe3f0006",
     "name": "фио",
     "text": "Заметки",
     "sex": 1,
     "birthday": "2019-01-24",
     "specialdate1name": "специальная дата 1",
     "specialdate2name": "специальная дата 2",
     "specialdate3name": "специальная дата 3",
     "personalOffer": {
        "name_1": "content_1",
        "name_2": "content_2"
        }, 
     "zipcode": "почтовый индекс",
     "address": "адрес",
     "email": "емейл",
     "webpage": "сайт",
     "phonenumber": "телефон",
     "inn": "инн",
     "document": "документ",
     "okpo": "окпд",
     "okpd": "окпо",
     "codeword": "кодовое слово"
  },
  "number": "3",
  "blocked": 0
}

Если карта с таким номером не найдена, то сервис вернет ошибку:

Card with number <номер_карты> not found.

Получение данных по номеру телефона

Для получения данных о карте, группе карт и клиенте по номеру телефона необходимо направить запрос типа GET на url:

http://{host}:{port}/v1/cards/phonenumber/{phoneNumber}
Пример ответа
{
  "idcard": "ff808181687e0bf001687e0f3e740007",
  "cardgroup":    {
     "idcardgroup": 1,
     "name": "группа карт",
     "cardmode": 0,
     "lenbeg": 0,
     "lenend": 0,
     "regexpattern": "маска",
     "inputmask": 31,
     "regexrule": "правило",
     "bonususecase": 0,
     "searchrule": 0
  },
  "client":    {
     "idclient": "ff808181687e0bf001687e0ebe3f0006",
     "name": "фио",
     "text": "Заметки",
     "sex": 1,
     "birthday": "2019-01-24",
     "specialdate1name": "специальная дата 1",
     "specialdate2name": "специальная дата 2",
     "specialdate3name": "специальная дата 3",
     "personalOffer": {
        "name_1": "content_1",
        "name_2": "content_2"
        },
     "zipcode": "почтовый индекс",
     "address": "адрес",
     "email": "емейл",
     "webpage": "сайт",
     "phonenumber": "телефон",
     "inn": "инн",
     "document": "документ",
     "okpo": "окпд",
     "okpd": "окпо",
     "codeword": "кодовое слово"
  },
  "number": "3",
  "blocked": 0
}

Если не найден клиент по телефону, то будет выдана ошибка:

Client with phonenumber <номер_телефона> not found.

Если найдено больше одного клиента, то будет выдана ошибка:

Found more than one client with phonenumber <номер_телефона>.

Если не найдена карта для клиента, то будет выдана ошибка:

No card found by phonenumber <номер_телефона>.

Если у клиента более одной активной карты, то будет выдана ошибка:

Found more than one card by phonenumber <номер_телефона>.

При получении карты по номеру телефона проверяется блокировка карты и ее статус.

  • No labels