@kirill321592

Php реферальная система,как сократить код?

Пишу многоуровневую реферальную систему с рангами. Т.е. 5 уровней и ранги за кол пригласивших, у каждого разный процент отчислений. При регистрации заношу id пригласившего рефералу. Далее при покупке рефералом пакета делаю отчисления
$dataRef = $this->db->column('SELECT ref FROM accounts WHERE id = :id', 
      ['id' => $data['uid']]);
        if ($dataRef === false) {
            return false;
        }
        if ($dataRef != 0) {
            $refSum = round((($data['amount'] * 15) / 100), 2);
            $params = [
                'sum' => $refSum,
                'id' => $dataRef,
            ];
            $this->db->query('UPDATE accounts SET refBalance = refBalance + :sum WHERE id = :id', $params);

Потом по цепочке человеку на уровень выше

$dataRef2 = $this->db->column('SELECT ref FROM accounts WHERE id = :id', ['id' => $dataRef]);
                if ($dataRef2 === 0) {
                    return false;
                }
                if ($dataRef2 != 0) {
                    $refSum = round((($data['amount'] * 10) / 100), 2);
                    $params = [
                        'sum' => $refSum,
                        'id' => $dataRef2,
                    ];
                    $this->db->query('UPDATE accounts SET refBalance = refBalance + :sum WHERE id = :id', $params);

Вопрос можно ли как-то сделать это элегантнее и сократить код? А то у меня так будет 40 таких кусков, для проверки на уровень и ранг.
  • Вопрос задан
  • 725 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Vitsliputsli
Оформите повторяющийся код отдельной функцией
Ответ написан
Комментировать
@ynblpb_spb
дятел php
банальный цикл do { ... } while();
Ответ написан
@sergmit
Попробуй использовать nested sets
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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