BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 апр 2024, 04:57

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: 19 мар 2009, 12:30 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Доброго времени суток.

Есть задача. Необходимо определить из скрипта BGBS параметры тарификации абонплаты, таких как:
1. Тарификация идет за день или за месяц.
2. Размер абонплаты.
3. и т. д.
Тариф для абонплаты может быть сложный. Привожу несколько примеров.

В wiki есть пример определения абонплаты "Определение размера абонентской платы", но он работает только на примере1, для двух других вариантов он не работает, да и дает он не полную информацию.

Через SQL эту задачу реализовал, но хотелось бы сделать через классы и методы API.

Прошу помочь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 16:26 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Выложите хоть, что писали, что получили и чего не хватает..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 17:03 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Вот такой вот сырой вариант:

Код:
private getCost(parent_node)
{
   query_get_cost = "SELECT type, data FROM mtree_node WHERE parent_node='"+parent_node+"'";
   re_get_cost = con.prepareStatement(query_get_cost);
   ResultSet re_get_cost = re_get_cost.executeQuery();
   while (re_get_cost.next())
   {
      type = re_get_cost.getString(1);
      data = re_get_cost.getString(2);
      type_cost = "0";
      cost = "0";
      if (type.indexOf("day_cost") == -1 && type.indexOf("month_cost") == -1)
      {
         print (type);
         error( "Ошибка в логике работы скрипта" );
         return null;
      };
      String[] arr = data.split ("%");
      if (arr.length == 2){
         String[] arr_type = arr[0].split ("&");
         String[] arr_cost = arr[1].split ("&");
         if (arr_type.length == 2)
         {
            type_cost = arr_type[1];
         };
         if (arr_cost.length == 2)
         {
            cost = arr_cost[1];
         };
      };
      if (type.indexOf("month_cost") != -1 && type_cost.indexOf("1") != -1)
      {
         return "month_cost%"+cost;
      }
      else if(type.indexOf("day_cost") != -1 && cost.indexOf("0") != -1)
      {
         return "day_cost%"+cost;
      }
      else
      {
         error( "Неверный тариф" );
         return null;
      };
   }
   return null;
}

private getAbnCost( cid, date_curr )
{
   query =
   " SELECT mtree_node.id, mtree_node.parent_node, mtree_node.mtree_id " +
   " FROM contract_tree_link"+
   "   INNER JOIN (module_tariff_tree"+
   "     INNER JOIN mtree_node"+
   "     ON (module_tariff_tree.id=mtree_node.mtree_id))"+
   "   ON (contract_tree_link.tree_id=module_tariff_tree.tree_id)"+
   " WHERE (contract_tree_link.date1 is NULL OR contract_tree_link.date1<='"+date_curr+"') AND"+
   " (contract_tree_link.date2 is NULL OR contract_tree_link.date2>='"+date_curr+"')"+
   " AND contract_tree_link.cid='"+cid+"' AND module_tariff_tree.mid='7'"+
   " AND mtree_node.type IN ('day_mode', 'month_mode') AND mtree_node.data IN ('sid&23%type&1%mode&day', 'sid&23%mode&month')"+
   " UNION"+
   " SELECT mtree_node.id, mtree_node.parent_node, mtree_node.mtree_id"+
   " FROM contract_tariff"+
   "   INNER JOIN (tariff_tree_link"+
   "     INNER JOIN (module_tariff_tree"+
   "       INNER JOIN mtree_node"+
   "       ON (module_tariff_tree.id=mtree_node.mtree_id))"+
   "     ON (tariff_tree_link.tree_id=module_tariff_tree.tree_id))"+
   "   ON (contract_tariff.tpid=tariff_tree_link.tpid)"+
   " WHERE (contract_tariff.date1 is NULL OR contract_tariff.date1<='"+date_curr+"') AND"+
   " (contract_tariff.date2 is NULL OR contract_tariff.date2>='"+date_curr+"')"+
   " AND contract_tariff.cid='"+cid+"' AND module_tariff_tree.mid='7'"+
   " AND mtree_node.type IN ('day_mode', 'month_mode') AND mtree_node.data IN ('sid&23%type&1%mode&day', 'sid&23%mode&month')";

   re = con.prepareStatement(query);
   ResultSet re = re.executeQuery();
   while (re.next())
   {
      node_id = re.getString(1);
      parent_node = re.getString(2);
      mtree_id = re.getString(3);
        Skip = false;
      //проверяем предыдущий параметр, возможно это период
      query_check_prev_date = "SELECT type, data FROM mtree_node WHERE id='"+parent_node+"'";
      re_check_prev_date = con.prepareStatement(query_check_prev_date);
      ResultSet re_check_prev_date = re_check_prev_date.executeQuery();
      while (re_check_prev_date.next())
      {
         prev_date1 = null;
         prev_date2 = null;
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         date_ = sdf.parse(date_curr);
         type = re_check_prev_date.getString(1);
         data = re_check_prev_date.getString(2);
         if (type.indexOf("global_period") != -1)
         {
            String[] dates = data.split ("%");
            if (dates.length == 2)
            {
               String[] dates1 = dates[1].split ("&");
               String[] dates2 = dates[0].split ("&");
               if (dates1.length == 2)
               {
                  SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyy");
                  prev_date1 = sdf.parse(dates1[1]);
               };
               if (dates2.length == 2)
               {
                  SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyy");
                  prev_date2 = sdf.parse(dates2[1]);
               };
            };
            if (prev_date1 != null && prev_date1.compareTo(date_) == 1)
            {
               Skip = true;
            };
            if (prev_date2 != null && prev_date2.compareTo(date_) == -1)
            {
               Skip = true;
            };
         };

      };

      if (Skip)
      {
         continue;
      };
      //проверяем следующий параметр, возможно это период
      query_check_date = "SELECT id, parent_node, mtree_id, type, data FROM mtree_node WHERE parent_node='"+node_id+"'";
      re_check_date = con.prepareStatement(query_check_date);
      ResultSet re_check_date = re_check_date.executeQuery();
      Skip = true;
      while (re_check_date.next())
      {
         date1 = null;
         date2 = null;
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         date_ = sdf.parse(date_curr);
         node_id_ = re_check_date.getString(1);
         parent_node_ = re_check_date.getString(2);
         mtree_id_ = re_check_date.getString(3);
         type = re_check_date.getString(4);
         data = re_check_date.getString(5);
         if (type.indexOf("day_period") != -1 || type.indexOf("month_period") != -1)
         {
            String[] dates = data.split ("%");
            if (dates.length == 2)
            {
               String[] dates1 = dates[1].split ("&");
               String[] dates2 = dates[0].split ("&");
               if (dates1.length == 2)
               {
                  SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyy");
                  date1 = sdf.parse(dates1[1]);
               };
               if (dates2.length == 2)
               {
                  SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyy");
                  date2 = sdf.parse(dates2[1]);
               };
            };
            if ((date1 == null || date1.compareTo(date_) == -1) && (date2 == null || date2.compareTo(date_) == 1))
            {
               Skip = false;
               node_id = node_id_;
               parent_node = parent_node_;
               mtree_id = mtree_id_;
               break;
            };
         }
         else
         {
            Skip = false;
            break;
         };
      };
      if (Skip )
      {
         continue;
      };
      Cost = getCost(node_id);
      if (Cost != null)
      {
         return Cost;
      };
   };
   return null;
}

date_str=TimeUtils.format(date, "yyyy-MM-dd");
Cost_data = getAbnCost(cid,date_str);
if (Cost_data == null)
{
   //пропускаем тех у кого не найдена необходимая абонплата
   return;
};
Cost_arr = Cost_data.split ("%");
cost_type = Cost_arr[0];
cost = Double.parseDouble(Cost_arr[1]);

day_str=TimeUtils.format(date, "dd");
day = Double.parseDouble(day_str);

if ((cost_type.indexOf("day_cost") == -1 && cost_type.indexOf("month_cost") == -1) || (cost_type.indexOf("month_cost") != -1 && day != 1))
{
   return;
};



Функция getAbnCost выбирает из глобальных и персональных тарифов все узлы где описывается услуга 23 (mtree_node.data IN ('sid&23%type&1%mode&day', 'sid&23%mode&month')), проверяет есть ли до этого узла или после него узел типа "период" и обрабатывает его.
На выходе имею <тип тарификации(за день или за месяц)>%<стоимость>.
Эта функция часть предполагаемой логики по блокировки пользователей. Скрипт будет запускаться в начале дня до списания абонплаты и блокировать тех у кого недостаточно денег на счету. Абоненты, у которых абонплата списывается за месяц будет проверяться первого числа, а у которых за день, то каждый день.

В общем то я получил все, что мне необходимо.
Меня беспокоит то, что при изменении структуры базы эта функция работать не будет.
Хотелось бы привязаться к вашему API, и код будет попроще и работать будет побыстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 18:21 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Что вы делали через API и что там не получилось?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 18:50 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Делал так (пример из wiki):
Код:
// код договора
cid = event.getContractID();
// на какой момент смотреть тариф
time = new GregorianCalendar();
// код услуги
sid = 23;
// код экземпляра модуля
mid = 7;
 
tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, time, "npay", mid, true );
// перебор тарифов в порядке позиций сначала персональных, потом глобальных
for( TariffModuleTree tree : tts.getTreeList( time ) )
{
    req = new TariffRequest();
    req.setRequestParam( "action", "calculate" );
    req.setRequestParam( "sid", sid );
    // считаем как будто абонплата подключена весь месяц   
    req.setRequestParam( "month_days", 1 );           
    req.setRequestParam( "period_days", 1 );
 
    tree.processRequest( req );
 
    cost = (Double)req.getResponseParam( "cost" );               
    if( req.wasAccepted() &&
        cost != null )
    {
        print( cost );
        break;
    }
}


Не получилось определить размер абонплаты для "Пример2" и "Пример3" (см. начало)
Не получилось определить тип абонплаты. Необходимо узнать как снимается абонплата, за день или за месяц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 18:55 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Так можно узнать тип абонплаты:
Код:
TariffRequest req = new TariffRequest();
        req.setRequestParam( "action", "reset" );
        req.setRequestParam( "sid", item.sid );
        req.setRequestParam( "time", item.date1 );
...
        String calcMode = (String)req.getResponseParam( "calc_mode" );


В вашем случае, чтобы узнать цену, нужно передать объект типа GregorianCalendar:
Код:
req.setRequestParam( "time", item.date2 );


Только для подневного режима цена возвращается одного дня, в оригинале тарификатор делает запрос на каждый день.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 мар 2009, 19:30 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Код:
req.setRequestParam( "time",  time);

Это работает, "период" учитывается.

А вот
Код:
(String)req.getResponseParam( "calc_mode" );


всегда возвращает null.

Делал так:
Код:
// код договора
cid = event.getContractID();
// на какой момент смотреть тариф
time = new GregorianCalendar();
// код услуги
sid = 23;
// код экземпляра модуля
mid = 7;
 
tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, time, "npay", mid, true );
// перебор тарифов в порядке позиций сначала персональных, потом глобальных
for( TariffModuleTree tree : tts.getTreeList( time ) )
{
    req = new TariffRequest();
    req.setRequestParam( "action", "calculate" );
    req.setRequestParam( "sid", sid );
    // считаем как будто абонплата подключена весь месяц   
    req.setRequestParam( "month_days", 1 );           
    req.setRequestParam( "period_days", 1 );
    req.setRequestParam( "time",  time);
 
    tree.processRequest( req );
 
    cost = (Double)req.getResponseParam( "cost" );   
   calcMode = (String)req.getResponseParam( "calc_mode" );   
   print( calcMode );         
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 мар 2009, 13:05 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Как получить calc_mode?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 мар 2009, 16:48 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Просто повторите код, который я вам дал. Там 2 типа запроса: выяснение типа и выяснянение цены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 мар 2009, 17:03 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Невнимательно посмотрел.
Все получилось, спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 фев 2010, 20:39 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
можете показать результат? а то у меня не получается :(
вот такой скрипт:
Код:
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.bean.event.*;
import bitel.billing.server.tariff.*;
import bitel.billing.server.util.*;
import java.sql.*;
import java.util.*;

// код договора
cid = event.getContractID();
// на какой момент смотреть тариф
time = new GregorianCalendar();
// код услуги
sid = 9;
// код экземпляра модуля
mid = 3;

tts = new ContractManager( con ).getRealtimeTariffTreeSet( cid, time, "npay", mid, true );
// перебор тарифов в порядке позиций сначала персональных, потом глобальных
for( TariffModuleTree tree : tts.getTreeList( time ) )
{
    req = new TariffRequest();
    req.setRequestParam( "action", "calculate" );
    req.setRequestParam( "sid", sid );
    // считаем как будто абонплата подключена весь месяц
    req.setRequestParam( "month_days", 1 );
    req.setRequestParam( "period_days", 1 );
    req.setRequestParam( "time",  time);

    tree.processRequest( req );

    cost = (Float)req.getResponseParam( "cost" );

    print( cost );
}


выдает это:

Код:
# cat script.log | grep ERROR
2010-02-15 15:32:28,080 ERROR [pool-2-thread-6] LoggingPrintStream - java.io.IOException: Stream closed
2010-02-15 15:32:28,080 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134)
2010-02-15 15:32:28,080 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
2010-02-15 15:32:28,080 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.common.CommonUtils.readByBlock(CommonUtils.java:896)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.tariff.TariffTreeBuilder.getModuleTariffConfig(TariffTreeBuilder.java:33)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.tariff.TariffModuleTree.init(TariffModuleTree.java:78)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.tariff.TariffModuleTree.load(TariffModuleTree.java:34)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.tariff.TariffTreeSet.getModuleTree(TariffTreeSet.java:48)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.tariff.TariffTreeSet.addTariffTree(TariffTreeSet.java:70)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.contract.bean.ContractManager.getRealtimeTariffTreeSet(ContractManager.java:544)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.contract.bean.ContractManager.getRealtimeTariffTreeSet(ContractManager.java:497)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.lang.reflect.Method.invoke(Method.java:597)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.Reflect.invokeMethod(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.Reflect.invokeObjectMethod(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.BSHPrimarySuffix.doName(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.BSHPrimarySuffix.doSuffix(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.BSHPrimaryExpression.eval(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.BSHPrimaryExpression.eval(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.BSHAssignment.eval(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bsh.Interpreter.eval(Unknown Source)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:310)
2010-02-15 15:32:28,081 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:69)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:189)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:128)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:227)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:207)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:130)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:180)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:79)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
2010-02-15 15:32:28,082 ERROR [pool-2-thread-6] LoggingPrintStream -    at java.lang.Thread.run(Thread.java:619)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2010, 12:18 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Посмотрите тут: http://wiki.bgbilling.ru/index.php/%D0% ... 0%B0%D1%85


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2010, 17:23 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
я смотрел ... я всю wiki перерыл и что только не пробывал, но что-то ни в какую у меня не хочет работать в скрипте радиус аутентификации (я хочу не пускать в инет если не хватает денег на абон. плату)? все время выдает ошибку java.io.IOException :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2010, 17:57 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
snark писал(а):
я смотрел ... я всю wiki перерыл и что только не пробывал, но что-то ни в какую у меня не хочет работать в скрипте радиус аутентификации (я хочу не пускать в инет если не хватает денег на абон. плату)? все время выдает ошибку java.io.IOException :(

:) кажется я знаю в чем у вас проблема.
Дело в том, что скрипт у вас выполняет радиус сервер, а у нас сервер биллинга.
У вас радиус сервер не находит какой то библиотеки.
Рекомендую вам не пытаться определять размер абонплаты в событии "радиус аутентификация", так как это лишняя нагрузка на радиус. Попробуйте найти другое решение вашей задачи.
Например мы блокируем пользователей, у которых недостаточно средств на списание абонплаты и заносим их в специальную группу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2010, 19:23 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
я уже тоже так подумал, тем более что есть грустный опыт того что радиус не все видит (отсюда и далее) ... наверное буду приостанавливать договора сервером ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.068s | 48 Queries | GZIP : On ]