Сервис счетчиков может быть установлен как на кассовый сервер, так и как самостоятельный сервер. |
Для установки сервиса необходимо:
КС (файл /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 | Тип операции:
| Обязательно для заполнения |
counterId | string | Идентификатор счетчика, по которому выполняются накопления | Указывается название или идентификатор акции. Обязательно для заполнения |
destination | string | Идентификатор, указывающий для кого выполняется учет счетчика | Может быть указан номер карты, номер телефона или любое другое поле, отправленное с кассы. Обязательно для заполнения |
dateChanger | date | Время выполнения операции | Указывается текущее время того устройства, с которого выполняется запрос |
idChanger | string | Идентификатор того, кто выполнил операцию | Может быть указан номер кассы |
operationId | string | Уникальный идентификатор операции | Кассовое ПО заполняет Обязательно для заполнения |
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 | Уникальный идентификатор операции | Кассовое ПО заполняет Обязательно для заполнения |
toTime | date | Время, до которого будет учитываться данная операция | Если время не указано, то операция учитывается до любого момента времени |
Логирование работы сервиса ведется в файле /var/log/artix/artixcs-counter/artixcs-counter.log
. Ротация логов осуществляется 1 раз в сутки.