Сервис для создания и управления выплатами, а также генераций событий создания и изменения выплаты.
Имплементирует сервис PayoutManagement протокола https://github.com/valitydev/payout-manager-proto
Единственной внешней точкой входа в сервис является API payout-manager-proto, через это API клиент получает возможность создавать выплату, получить по ней информацию, подтвердить или отменить. При создании или изменении статуса выплаты основной задачей сервиса payout-manager является проксирование вызова до сервиса shumway, затем результат вызова (создание выплаты или изменение ее статуса) посылается в виде события с состоянием PayoutChange и снепшотом актуальной выплаты Payout в топик кафки pm-events-payout
Сервис используется при первичном создании выплаты для получения информации о участнике и его магазинах (например, необходим payoutToolId), а также для подсчета проводок (FinalCashFlowPosting) с изменениями баланса в рамках указанного (при вызове метода создания выплаты) количества условных единиц (кеша которое хочется вывести)
Сам сервис хранит в себе историю изменения баланса кошелька (при этом история изменений в совокупности прямо говорит об актуальном балансе), а также реализует механизмы для управления балансом кошелька.
В данном кейзе сервис используется для целевого изменения баланса кошелька. На первом этапе создания выплаты сервис shumway вызывается для холдирования списка проводок с изменениями баланса (подсчитанных ранее PartyManagement). На этом же этапе вызывается повторно для получения оставшегося баланса кошелька, если счет не проходит валидацию внутри сервиса payout-manager, то холдирование указанной части баланса откатывается. На следующих этапах цель (commit, rollback,revert) вызова сервиса shumway напрямую зависит от цели изменения статуса выплаты, с которой вызывают сервис payout-manager.
База используется для сохранения информации о выплате и проводок баланса. Эта информация используется при запросе от клиента о получении данных о выплате и при изменении статуса, для валидации внешнего вызова.
Используется только в качестве продюсера для записи любых изменений по выплате. Данную информацию на текущий момент использует magista, newway и analytics.