Установка сервиса счетчиков
Для установки сервиса необходимо:
- Добавить репозитории:
КС (файл
/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
Обновить список доступных пакетов командой:
sudo apt-get update
Установить пакет
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
-запрос.
Реализовано два вида счетчиков:
Счетчики, срабатывающие при применении карты покупателя в чеке, при расчете дисконта.
Для изменения счетчика необходимо направить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
Время, до которого будет учитываться данная операция Если время не указано, то операция учитывается до любого момента времени Счетчики, срабатывающие при открытии документа на кассе, без применения карты покупателя в чеке.
Могут использоваться в дисконте для предоставления скидок на каждый 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 раз в сутки.