Сервис подрезки бонусных транзакций представляет собой сервис, который работает напрямую с бонусным сервером. Предназначен для подрезки бонусных транзакций и их статусов за произвольный период времени.
Установка сервиса производится командой:
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/db_bonuses 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
содержится информация о текущем состоянии сервиса подрезки бонусных транзакций. После выполнения подрезки бонусов в таблицу будет записана информация о датах:
lastDateExec
",undercutDate
".В процессе работы сервиса будут созданы новые бонусные транзакции, объединяющие предыдущие бонусные транзакции внутри своей группы в одну транзакцию. Объединение происходит в соответствии с весом групп, в которые входят бонусные транзакции.
Все удаляемые транзакции и их статусы архивируются в БД бонусного сервера в таблицах |
Способ обработки транзакций определяется в зависимости от статуса, времени жизни и даты создания бонусной транзакции:
lastStatus
имеет значение CANCELLED
) архивируются,Логирование ведется в файле /var/log/artix/artixcs-undercut-asset/artixcs-undercut-asset.log
, который создается после первого запуска сервиса.