Страница 1 из 1

Автоматическая активация

Добавлено: Вт июл 21, 2009 1:51 pm
ppe
Неплохо бы было реализовать автоматическую активацию пользователя в модуле Dv при достаточной сумме на счете. Правок не много, но несколько утомительно вносить их после каждого обновления и потом отлаживать, выяснять нюансы очередной версии почему не работает или работает не так. Вообще было бы замечательно, если бы эту фичу можно было бы указать индивидуально для тарифа.

Re: Автоматическая активация

Добавлено: Вт июл 21, 2009 2:23 pm
~AsmodeuS~
более подробно

Re: Автоматическая активация

Добавлено: Вт июл 21, 2009 2:32 pm
ppe
Описываю конкретно мой пример, но не думаю, что я уникальный.
Есть тариф, называется "Пятерка". Плата за активацию 5 грн. Срок дествия тарифа - 1 день. При первом подключении пользователя в день его учетная запись активируется, у него списывается плата за активацию его учетной записи. При последующих подключениях у него ни чего не берется. За трафик я плату не беру, но это уже не особо принципиально, можно в интервалай и прописать плату за трафик. На следующий день у пользователя его учетная запись не активна, так как срок действия тарифа - 1 день. Если в последующие сутки он не подключался к инету - у него ни чего не берется. По есть абонплата берется только за те дни, когда были подключения.
У меня это реализовано так:

Код: Выделить всё

796c796,798
<   u.ext_bill_id
---
>   b.deposit,
>   u.ext_bill_id,
>   u.expire < CURDATE()
797a800
>      LEFT JOIN bills b ON (u.bill_id = b.id)
800,801c803,804
<         AND (u.expire='0000-00-00' or u.expire > CURDATE())
<         AND (u.activate='0000-00-00' or u.activate <= CURDATE())
---
>         AND (u.expire > '0000-00-00' or u.expire <= CURDATE())
>         AND (u.activate = '0000-00-00' or u.activate <= CURDATE())
827c830,832
<      $self->{EXT_BILL_ID}
---
>      $self->{DEPOSIT},
>      $self->{EXT_BILL_ID},
>      $self->{EXPIRED}
829a835,872
>       $self->query($db, "select dv.tp_id,
>       tp.activate_price,
>       tp.age
>          FROM (dv_main dv, tarif_plans tp)
>          WHERE dv.tp_id=tp.id
>              AND dv.uid='$self->{UID}'
>          GROUP BY dv.uid;");
>
>       if ($self->{TOTAL} < 1)
>       {
>         $RAD_PAIRS{'Reply-Message'}="No TP used during auto-change";
>         return 1, \%RAD_PAIRS;
>       }
>
>       ($self->{TP_ID},$self->{TP_ACT_PRICE},$self->{TP_AGE},) = @{ $self->{list}->[0] };
>
>       my $admin = $CONF->{SYSTEM_ADMIN_ID};
>
>      if($self->{EXPIRED})
>      {
>       if($self->{TP_ACT_PRICE} > 0)
>          {
>           if ($self->{DEPOSIT} + $self->{CREDIT} < $self->{TP_ACT_PRICE})
>           {
>               $RAD_PAIRS{'Reply-Message'}="Not enough money for re-activate";
>               return 1, \%RAD_PAIRS;
>           }
>           $self->query($db, "UPDATE bills SET deposit=deposit-$self->{TP_ACT_PRICE} WHERE id='$self->{BILL_ID}';", 'do');
>           $self->query($db, "INSERT INTO fees (uid, bill_id, date, sum, dsc, ip, last_deposit, aid, vat)
>                 values ('$self->{UID}', '$self->{BILL_ID}', NOW(), '$self->{TP_ACT_PRICE}', 'RE-ACTIVATE TP',
>                 '0', '$self->{DEPOSIT}', '$CONF->{SYSTEM_ADMIN_ID}',
>                 '0');", 'do');
>           if ($self->{TP_AGE} > 0)
>           {
>               $self->query($db, "UPDATE users SET  activate=curdate(), expire=curdate() + INTERVAL $self->{TP_AGE} day WHERE uid='$self->{UID}';", 'do');
>           }
>          }
>      }
Возможно что-то не корректно. По этому хотелось бы чтобы это исходило от автора, который лучше знает нюансы своего продукта.

Re: Автоматическая активация

Добавлено: Вт июл 21, 2009 4:29 pm
~AsmodeuS~
не вижу поиска подключения

Re: Автоматическая активация

Добавлено: Вт июл 21, 2009 6:19 pm
NiTr0
Патч на авто-активацию при соединении я где-то выкладывал, эдак больше года назад. Еще стоит сделать проверку при авто-активации на наличие в расписании заданий для данного юзера - и если задания есть, пакет не активировать (пример - вдруг юзер поставил по расписанию смену пакета, дата наступила, а крон еще не отработал).

Re: Автоматическая активация

Добавлено: Сб авг 01, 2009 7:13 am
ppe
~AsmodeuS~ писал(а):не вижу поиска подключения
Почему я и поместил этот пост в раздел Запрос новых возможностей. Автор аналогичную возможность сделает более корректно.

Re: Автоматическая активация

Добавлено: Вт окт 11, 2011 9:50 am
NiTr0
апну тему.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.

Re: Автоматическая активация

Добавлено: Ср июл 27, 2016 12:18 am
Prihod
NiTr0 писал(а):апну тему.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.
Перезалейте плз файлик