Автоматическая активация
Автоматическая активация
Неплохо бы было реализовать автоматическую активацию пользователя в модуле Dv при достаточной сумме на счете. Правок не много, но несколько утомительно вносить их после каждого обновления и потом отлаживать, выяснять нюансы очередной версии почему не работает или работает не так. Вообще было бы замечательно, если бы эту фичу можно было бы указать индивидуально для тарифа.
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: Автоматическая активация
более подробно
Re: Автоматическая активация
Описываю конкретно мой пример, но не думаю, что я уникальный.
Есть тариф, называется "Пятерка". Плата за активацию 5 грн. Срок дествия тарифа - 1 день. При первом подключении пользователя в день его учетная запись активируется, у него списывается плата за активацию его учетной записи. При последующих подключениях у него ни чего не берется. За трафик я плату не беру, но это уже не особо принципиально, можно в интервалай и прописать плату за трафик. На следующий день у пользователя его учетная запись не активна, так как срок действия тарифа - 1 день. Если в последующие сутки он не подключался к инету - у него ни чего не берется. По есть абонплата берется только за те дни, когда были подключения.
У меня это реализовано так:
Возможно что-то не корректно. По этому хотелось бы чтобы это исходило от автора, который лучше знает нюансы своего продукта.
Есть тариф, называется "Пятерка". Плата за активацию 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');
> }
> }
> }
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: Автоматическая активация
не вижу поиска подключения
Re: Автоматическая активация
Патч на авто-активацию при соединении я где-то выкладывал, эдак больше года назад. Еще стоит сделать проверку при авто-активации на наличие в расписании заданий для данного юзера - и если задания есть, пакет не активировать (пример - вдруг юзер поставил по расписанию смену пакета, дата наступила, а крон еще не отработал).
Re: Автоматическая активация
Почему я и поместил этот пост в раздел Запрос новых возможностей. Автор аналогичную возможность сделает более корректно.~AsmodeuS~ писал(а):не вижу поиска подключения
Re: Автоматическая активация
апну тему.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.
- Вложения
-
- auto_act.patch.gz
- (2.05 КБ) 779 скачиваний
Re: Автоматическая активация
Перезалейте плз файликNiTr0 писал(а):апну тему.
обратились с вопросом по поводу патча; найти свой пост где я его выкладывал, я не смог, продублирую аттачем.