Биллинговая система Nodeny

Главная категория => Nodeny 50 => Тема начата: Sork от 14 Июня 2011, 09:43:25



Название: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 09:43:25
Обнаружилась постоянно приветствующая проблема - не отключается интернет для пользователей в следующих условиях:

Если в текущем месяце у пользователя есть действующий тарифный план и состояние авторизации "Всегда онлайн", то при установке на следующий месяц тарифного плана "Заблокирован" с активным пунктом "доступ должен быть заблокирован всегда" при наступлении следующего месяца биллинг его не отключает, пункт Доступ: остается в состоянии Разрешен.

Конечно действие "Операции" - "Проверка" таких пользователей выявляет, но хотелось бы чтобы поправили поведение биллинга для пользователей "Всегда онлайн".


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: stix от 14 Июня 2011, 10:19:36
он и будет разрешен всегда.
"доступ заблокирован всегда" дает напоминание о таких юзерах


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 10:28:02
он и будет разрешен всегда.
"доступ заблокирован всегда" дает напоминание о таких юзерах

не совсем логичное поведение.

данный пункт (состояние авторизации) подразумевает необходимо ли авторизировать пользователя или нет, но никак не подразумевает что его необходимо перестать обрабатывать в биллинге (включать/отключать).


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 14 Июня 2011, 10:30:28
Да когда же вы ... научитесь искать по форуму!? Это же просто ... за этот мес. ты уже ТРЕТИЙ кто с этим "Заблокирован" удивляется...


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 11:34:25
Да когда же вы ... научитесь искать по форуму!? Это же просто ... за этот мес. ты уже ТРЕТИЙ кто с этим "Заблокирован" удивляется...

из тонны споров выковыряно решение-костыль от автора:

http://forum.nodeny.com.ua/index.php?topic=426.msg4353#msg4353


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 11:55:27
Костыль но на Perl`e

Код:
#!/usr/bin/perl 

$VER=50.32;

use DBI;

$Main_config='/usr/local/nodeny/nodeny.cfg.pl';
$call_pl='/usr/local/nodeny/web/calls.pl';

require $Main_config;
require $call_pl;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=10";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});
$dbh->do("SET character_set_client=cp1251");
$dbh->do("SET character_set_connection=cp1251");
$dbh->do("SET character_set_results=cp1251");


$sth=$dbh->prepare("update users set state='off' where state='on' AND paket in (select id from plans2 where flags REGEXP ('k'))");
$sth->execute;
$sth=$dbh->prepare("INSERT INTO pays SET admin_id=0, admin_ip=0, office=0 ,mid=0,cash=0,type=50,category=410,reason='',coment='Пользователи в заблокированных тарифах отключены',time=UNIX_TIMESTAMP()");
$sth->execute;


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 14 Июня 2011, 12:56:15
Я так понимаю, что сочинять костыли это мода такая? Сделайте же себе ТРИГГЕР и не ипите мозг... Это ж надо на два запроса колотить скрипт, потом его куда-то вешать.


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 13:09:00
Я так понимаю, что сочинять костыли это мода такая? Сделайте же себе ТРИГГЕР и не ипите мозг... Это ж надо на два запроса колотить скрипт, потом его куда-то вешать.

это форум, где люди обмениваются информацией а не только возмущаются - выкладывайте свое решение?


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 14 Июня 2011, 13:19:58
Код:
mysql> help create trigger;
Там все написано.


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: Sork от 14 Июня 2011, 14:35:27
и зачем лезть в тему если нет желания помочь ...

решение через триггер:
Код:
DROP TRIGGER IF EXISTS `SetStateOff`;
DELIMITER |
CREATE TRIGGER SetStateOff BEFORE UPDATE ON users
  FOR EACH ROW BEGIN
  IF (NEW.paket in (select id from plans2 where flags REGEXP ('k')) )
   THEN
       SET NEW.state = 'off';
  END IF;

  END
|
DELIMITER ;


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 14 Июня 2011, 14:49:50
Критика -- верный способ заставить человека ДУМАТЬ! Я послал в правильном направлении?


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: stix от 15 Июня 2011, 08:30:42
отличное решение триггером.
плюсик в репу


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 15 Июня 2011, 09:17:40
Да тут половину "проблем" можно решить триггерами. У меня многое на них "висит".


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: stix от 05 Июля 2011, 14:23:52
подскажите как сделать наоборот?
Код:
select id from plans2 where flags REGEXP ('k'))
чтобы  выборка была без флага k
! не катит.


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 05 Июля 2011, 16:22:09
Код:
select id from plans2 where flags NOT REGEXP ('k')


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: stix от 05 Июля 2011, 16:28:53
Код:
select id from plans2 where flags NOT REGEXP ('k')
трындец...пробовал NOT, видимо где-то машинально ошибся, подсказали, что с регуляторным выражением такое не покатит.

спасибо


Название: Re: Проблема с пользователями "Всегда онлайн" и тарифом "Заблокирован".
Отправлено: 0xbad0c0d3 от 05 Июля 2011, 16:32:12
Обманули! )
В регулярках можно использовать
Код:
(?!k)
Но не в случае MySQL