Сервис подрезки бонусных транзакций представляет собой сервис, который работает напрямую с бонусным сервером. Предназначен для подрезки бонусных транзакций и их статусов за произвольный период времени.
Установка и настройка сервиса
Установка сервиса производится командой:
apt-get install artixcs-undercut-asset
Настройка работы сервиса осуществляется в конфигурационном файле application.properties
, который находится в директории /opt/artixcs-undercut-asset/
application.properties
.
#Подключение к базе данных (mysql или mssql) storage.type=mysql #Настройки для подключения к MYSQL spring.datasource.url=jdbc:mysql://127.0.0.1:3306/artixcsAll spring.datasource.username=netroot spring.datasource.password=netroot spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #Настройки для подключения к MSSQL #spring.datasource.url=jdbc:sqlserver://127.0.0.1:1433;databaseName=artixcsAll;encrypt=false #spring.datasource.username=SA #spring.datasource.password=yourStrong(!)Password #spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.hikari.connection-timeout=300000 spring.datasource.hikari.auto-commit=false spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl spring.liquibase.change-log=db/changelog/changelog-master.xml # Настройка, отвечающая за количество дней, по которое необходимо подрезать данные asset.undercut.days=360 # Настройка, отвечающая за количество карт, которые будут обрабатываться в рамках одной транзакции. # Принимает значение от 1 до 2000 cards.max.batch.size=100 # Идентификатор сессии asset.session.id=undercut_asset # Причина подрезки транзакций asset.last.reason=Operation formed as a result of cutting data serviceName=artixcs-undercut-asset #Количество одновременно удаляемых транзакций cut.batch.size=10000 #Количество одновременно подрезаемых транзакций recalc.batch.size=1000 #Время, через которое задача для подсчета запустится в случае отсутствия данных (в секундах) balance.task.repeat.delay=600 #Время, через которое задача для подсчета запустится сразу после запуска сервиса (в секундах) balance.task.initial.delay=1
Запуск сервиса
По расписанию
По умолчанию сервис запускается в первый день месяца, в 00:10 по местному времени. Изменение данного поведения производится командами:
sudo su crontab -e
В открывшемся файле можно отредактировать строку с сервисом artixcs-undercut-asset
и вручную ввести cron-выражение для задания периодичности и времени запуска сервиса.
Вручную
Запуск сервиса подрезки бонусных транзакций вручную производится командами:
cd /opt/artixcs-undercut-asset/ ./artixcs-undercut-asset.jar
Принцип работы
При запуске сервиса подрезки выполняется копирование данных из БД бонусного сервера таблицы asset
в таблицу asset_copy
.
После копирования происходит отбор транзакций по идентификаторам для подрезки данных из таблицы asset_copy
, данные распределяются по соответствующим таблицам в БД бонусного сервера: транзакции, которые необходимо удалить, помещаются в таблицу asset_cut
, транзакции, которые необходимо пересчитать в таблицу asset_recalc
.
На следующем этапе транзакции удаляются или пересчитываются в БД бонусного сервера в основной таблице asset
по идентификаторам, хранящимся в БД бонусного севрера в таблицах asset_cut
и asset_recalc
.
В БД бонусного сервера в таблице undercut_state
содержится информация о текущем состоянии сервиса подрезки бонусных транзакций. Запись удаляется из таблицы если подрезка бонусных транзакций завершилась успешно.
В процессе работы сервиса будут созданы новые бонусные транзакции, объединяющие предыдущие бонусные транзакции внутри своей группы в одну транзакцию. Объединение происходит в соответствии с весом групп, в которые входят бонусные транзакции.
Все удаляемые транзакции и их статусы архивируются в БД бонусного сервера в таблицах asset_archive
и assetTransactionStatus_achive
. Таблицы для архивных записей сервис создает автоматически.
Способ обработки транзакций определяется в зависимости от статуса, времени жизни и даты создания бонусной транзакции:
- транзакции с датой создания, превышающей дату подрезки не обрабатываются,
- отмененные транзакции (поле
lastStatus
имеет значениеCANCELLED
) архивируются, - транзакции по картам с балансом, равным нулю в рамках одной группы, архивируются,
- транзакции с временем жизни, истекшим до даты подрезки, архивируются,
- транзакции с временем жизни, не истекшим до даты подрезки:
- архивируются,
- суммируются внутри своей группы по весу бонусных баллов и объединяются в новую транзакцию,
- транзакции с неограниченным временем жизни:
- архивируются,
- суммируются внутри группы по весу бонусных баллов и объединяются в новую транзакцию.
Логирование
Логирование ведется в файле /var/log/artix/artixcs-undercut-asset/artixcs-undercut-asset.log
, который создается после первого запуска сервиса.