@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);
  }
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab
Здесь отвечаю на вопросы.
Как это лучше сделать?
Сделать таблицу выплат: код учётной записи, дата, сумма. Баланс средств на учётной записи — это сумма всех выплат.
Ответ написан
@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'а
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы