Сервис подрезки бонусных транзакций представляет собой сервис, который работает напрямую с бонусным сервером. Предназначен для подрезки бонусных транзакций и их статусов за произвольный период времени.

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

Установка сервиса производится командой:

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, который создается после первого запуска сервиса.

  • No labels