Сервис счетчиков может быть установлен как на кассовый сервер, так и как самостоятельный сервер. 

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

Для установки сервиса необходимо:

  1. Добавить репозитории:
    • КС (файл /etc/apt/sources.list.d/cashserver4.list):

      curl http://update.artix.su/static/cs/install_scripts/stable/cs_env/add_rep.sh -o /tmp/add_rep.sh
      chmod +x /tmp/add_rep.sh
      /tmp/add_rep.sh stable
    • postgresql (файл /etc/apt/sources.list.d/pgdg.list):

      curl http://update.artix.su/static/cs/install_scripts/stable/cs_env/install_db.sh -o /tmp/install_db.sh
      chmod +x /tmp/install_db.sh
      /tmp/install_db.sh pgsql
  2. Обновить список доступных пакетов командой:

    sudo apt-get update
  3. Установить пакет artixcs-counter командой:

    sudo apt-get install artixcs-counter

После установки сервис счетчиков будет доступен по адресу <хост_сервера>:39021.

REST API сервиса счетчиков доступно по адресу <host>:39021/swagger-ui.html.

Команды сервиса

Сервис доступен по имени artixcs-counter. Управление доступно командами:

sudo service artixcs-counter start|stop|status

Конфигурирование сервиса

Для хранения данных на сервере счетчиков необходимо использовать СУБД PostgreSQL.

Настройка сервиса производится в конфигурационном файле application.properties, расположенном в директории /opt/artixcs-counter/.

НаименованиеТип данныхОписаниеПримечания
dataSource.driverClassNameстроковыйНазвание JDBC драйвераПо умолчанию org.postgresql.Driver
dataSource.urlстроковый

URL для подключения к БД сервера счетчиков 

По умолчанию jdbc:postgresql://localhost:5432/cs_counter
dataSource.usernameстроковыйИмя пользователяПо умолчанию netroot
dataSource.passwordстроковыйПарольПо умолчанию netroot
rest.userстроковыйЛогин для авторизации по restПо умолчанию admin
rest.passwordстроковыйПароль для авторизации по restПо умолчанию admin
server.portцелочисленныйПорт сервисаПо умолчанию 39021
skipExistOperationлогическийПозволяет пропускать (не обрабатывать) операции, которые уже есть в БДПо умолчанию false
requestCountForTrimDbцелочисленныйУказывает, после какого количества запросов на запись счетчиков выполнять подрезку (удаление неактуальных операций по счетчикам, учитывая поля to_time)По умолчанию 1000
Пример настройки
dataSource.driverClassName=org.postgresql.Driver
dataSource.url=jdbc:postgresql://localhost:5432/cs_counter
dataSource.username=netroot
dataSource.password=netroot
rest.user=admin
rest.password=admin
server.port = 39021

#пропускать (не обрабатывать) операции, которые уже есть в БД
skipExistOperation=false

#после какого количества запросов на запись счетчиков выполнять подрезку(удаление неактуальных операций по счетчикам, учитывая поля to_time)
requestCountForTrimDb=1000

Запросы сервиса

Счетчики обычно изменяются кассой при расчете дисконта. Если требуется изменять счетчики с помощью сторонних сервисов, то можно поддержать соответствующий REST-запрос.

Реализовано два вида счетчиков:

  1. Счетчики, срабатывающие при применении карты покупателя в чеке, при расчете дисконта.
    Для изменения счетчика необходимо направить REST запрос с авторизацией basicAuth (логин и пароль указаны в настройках сервиса) типа POST на url:

    Пример запроса
    http://{хост сервиса}:{порт сервиса}/v1/operations?confirm=true
    Тело запроса
    {
      "amount": 12.9,
      "operationType": "SUB",
      "counterId": "sale1",
      "destination": "1230000000123",
      "dateChanger": "2020-12-16T18:14:29.038+07",
      "idChanger": "cash1",
      "operationId": "sale1_cash1_1230000000123_123456",
      "fromTime": "",
      "toTime": ""
    }
    НаименованиеТип данныхОписаниеПримечания
    amount

    bigdecimal

    Сумма, которую надо добавить или отнять по определенному счетчикуОбязательно для заполнения
    operationType

    enum

    Тип операции:

    • ADD – операция добавления,
    • SUB – операция вычитания.
    Обязательно для заполнения
    counterId

    string

    Идентификатор счетчика, по которому выполняются накопления

    Указывается название или идентификатор акции.

    Обязательно для заполнения

    destination

    string

    Идентификатор, указывающий для кого выполняется учет счетчика

    Может быть указан номер карты, номер телефона или любое другое поле, отправленное с кассы.

    Обязательно для заполнения

    dateChanger

    date

    Время выполнения операцииУказывается текущее время того устройства, с которого выполняется запрос
    idChanger

    string

    Идентификатор того, кто выполнил операциюМожет быть указан номер кассы
    operationId

    string

    Уникальный идентификатор операции

    Кассовое ПО заполняет operationId по правилу: <идентификатор_счетчика> + <номер_карты> + <текущее_время("yyyyMMddhhmmsszzz")>

    Обязательно для заполнения

    fromTime

    date

    Время, с которого будет учитываться данная операцияЕсли время не указано, то операция учитывается с любого момента времени
    toTime

    date

    Время, до которого будет учитываться данная операцияЕсли время не указано, то операция учитывается до любого момента времени
  2. Счетчики, срабатывающие при открытии документа на кассе, без применения карты покупателя в чеке.

    Могут использоваться в дисконте для предоставления скидок на каждый N-ый чек.

    Для изменения счетчика необходимо направить REST запрос с авторизацией basicAuth (логин и пароль указаны в настройках сервиса) типа POST на url:

    Пример запроса
    http://{хост сервиса}:{порт сервиса}/v1/operations/additional/increment
    Тело запроса
    {  
    	"operationId":"2c1a760b-8420-4041-802c-e7e3490cd2fa120230502150502898",
        "counterId":"1",
        "destination":"1",
        "amount":"1",
        "idChanger":"00010200980004",
        "dateChanger":"2023-05-25T12:05:02.099+07",
        "to_time": ""
    }
    НаименованиеТип данныхОписаниеПримечания
    amount

    bigdecimal

    Сумма, которую надо добавить или отнять по определенному счетчикуОбязательно для заполнения
    counterId

    string

    Идентификатор счетчика, по которому выполняются накопления

    Указывается название или идентификатор акции.

    Обязательно для заполнения

    destination

    string

    Идентификатор, указывающий для кого выполняется учет счетчика

    Может быть указан номер карты, номер телефона или любое другое поле, отправленное с кассы.

    Обязательно для заполнения

    dateChanger

    date

    Время выполнения операцииУказывается текущее время того устройства, с которого выполняется запрос
    idChanger

    string

    Идентификатор того, кто выполнил операциюМожет быть указан номер кассы
    operationId

    string

    Уникальный идентификатор операции

    Кассовое ПО заполняет operationId по правилу: <идентификатор_счетчика> + <номер_карты> + <текущее_время("yyyyMMddhhmmsszzz")>

    Обязательно для заполнения

    toTime

    date

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

Логирование работы сервиса

Логирование работы сервиса ведется в файле /var/log/artix/artixcs-counter/artixcs-counter.log. Ротация логов осуществляется 1 раз в сутки.

  • No labels