Skip to content
This repository has been archived by the owner on Jun 26, 2024. It is now read-only.

valitydev/scheduled-payout-worker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

scheduled-payout-worker

Сервис для формирования выплат по расписанию.

Описание работы сервиса

Верхнеуровневое описание взаимодействия

scheduled-payout-worker - сервис, предназначенный для обработки событий от сервиса machinegun с информацией о платежах и последующем формировании запроса на выплату к сервису payout-manager.

События от сервиса machinegun поступают через Apache Kafka, данные о магазинах и выплатах хранятся в БД сервиса scheduled-payout-worker. Расписанием для выплат управляет отдельный сервис - schedulator. При получении запроса от schedulator'а формируется запрос на выплату к сервису payout-manager.

Взаимодействие с Kafka

scheduled-payout-worker читает события из топика party-management-topic:

spw-kafka

Топик содержит события с информацией о party/shop'е. Они делятся на два подтипа:

1 События о создании shop'а, изменении платежного инструмента.

На основе полученных событий в БД изменяется статус соответствующего shop'а (например, блокируется прием инвоисов)

2 События с информацией о создании/изменении/удалении расписания выплат для магазина.

В эту категорию попадают события о создании shop'а с заполненным payout_schedule (тогда создается расписание), либо события об изменении расписания (поле payout_schedule_changed), что может сигнализировать как о необходимости создать/обновить расписание, так и удалить его. На данном этапе фиксируются только дата и время выплаты, ее размер будет посчитан позднее (см. взаимодействие с сервисом payout-manager).

При получении событий, связанных с расписанием выплат, формируется запрос к сервису schedulator, который, при наступлении времени выплаты, выполнит вызов сервиса scheduled-payout-worker.

Взаимодействие с сервисом schedulator

Протокол взаимодействия описан тут.

Схема взаимодействия:

spw-schedulator

Сервис scheduled-payout-worker отправляет запрос на создание/удаление запланированного job'а. В случае, когда наступает время выполнения job'а, schedulator вызывает сервис scheduled-payout-worker.

Взаимодействие с сервисом payout-manager

Протокол взаимодействия описан тут.

При получении запроса от сервиса schedulator, scheduled-payout-worker расчитывает сумму и валюту выплаты для магазина на основе данных в БД и отправляет запрос к сервису payout-manager. Расчет суммы происходит на основе всех финансовых операций (рефанды, платежы, корректировки и т.д.) ранее не попадавших в выплаты (не заполнено поле payout_id), в разрезе определенного магазина и за определенный интервал времени (время срабатывания schedulator'а - 7 дней).

Схема БД

spw-db

Помимо описанных выше взаимодействий, scheduled-payout-worker также взаимодействует с сервисами:

  • party-management (для получения актуальной информации о party/shop'е)
  • dominant (для получения актуальной информации о календаре выплат)
  • claim-management (сервис может присылать запросы на создание/удаление расписания выплат)
  • shumway (для получения баланса по конкретному магазину на определенный момент времени)

Общая схема взаимодействия отображена ниже:

spw-common-v

Releases

No releases published

Packages

 
 
 

Languages