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

Ответить
ppe
Сообщения: 50
Зарегистрирован: Чт авг 09, 2007 11:35 am

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

Сообщение ppe »

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

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

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

Сообщение ~AsmodeuS~ »

более подробно

ppe
Сообщения: 50
Зарегистрирован: Чт авг 09, 2007 11:35 am

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

Сообщение 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');
>           }
>          }
>      }
Возможно что-то не корректно. По этому хотелось бы чтобы это исходило от автора, который лучше знает нюансы своего продукта.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

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

Сообщение ~AsmodeuS~ »

не вижу поиска подключения

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

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

Сообщение NiTr0 »

Патч на авто-активацию при соединении я где-то выкладывал, эдак больше года назад. Еще стоит сделать проверку при авто-активации на наличие в расписании заданий для данного юзера - и если задания есть, пакет не активировать (пример - вдруг юзер поставил по расписанию смену пакета, дата наступила, а крон еще не отработал).

ppe
Сообщения: 50
Зарегистрирован: Чт авг 09, 2007 11:35 am

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

Сообщение ppe »

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

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

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

Сообщение NiTr0 »

апну тему.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.
Вложения
auto_act.patch.gz
(2.05 КБ) 755 скачиваний

Prihod
Сообщения: 32
Зарегистрирован: Пт апр 29, 2011 7:24 am

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

Сообщение Prihod »

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

Ответить