@kirill321592

Php ежемесячные выплаты по реферальной программе?

Есть реферальная программа с рангами. При покупке рефералом пакета, необходимо делать выплаты процента пригласившему. Сейчас я это делаю сразу после покупки, но мне нужно это делать например 7-го числа каждого месяца. Знаю есть планировщик крон, но выплат и пересчетов рангов будет довольно много. Как это лучше сделать?
if ($dataRef > 0) {
    $refSum = round((($data['amount'] * $percent) / 100), 2);
    $params = [
      'sum' => $refSum,
      'id' => $dataRef,
    ];
    $this->db->query('UPDATE accounts SET refBalance = refBalance + :sum WHERE id = :id', $params);
  }
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab
Здесь отвечаю на вопросы.
Как это лучше сделать?
Сделать таблицу выплат: код учётной записи, дата, сумма. Баланс средств на учётной записи — это сумма всех выплат.
Ответ написан
402d
@402d
начинал с бейсика на УКНЦ в 1988
вот почему Вы боитесь запроса
select sum(amount) as refBalance from balance_history where partnerId = :?

{id,createdDate,amount,partnerId,reason}
и условно
amount + 0.07 за тото ... 1000 раз
amount -1000 выплачено на карту
Ответ написан
xEpozZ
@xEpozZ
Веб-разработчик
Делаете запрос и подсчитываете всевозможные данные в бд
UPDATE accounts SET refBalance = (SELECT sum FROM referals WHERE referrer_id = :referrer_id)

При количестве записей в размере 100к процесс займет менее одной минуты времени.
Главное оптимально выстроить индексы для внутреннего SELECT'а
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы