BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 17:13

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 27 ноя 2007, 18:04 
Так возможно-ли както привязать пользователя к диллеру а не к платежам (только не субдоговор)?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 ноя 2007, 20:43 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 ноя 2007, 11:53 
по параметру: Called-Station-Id в модуле DialUP привязывать договор к определенным Диллерам...

Задача - домовые сети (интернет кафе, группы абонентов) ставят беспроводную железку у себя в сети как пограничную, абоненты регистрируются по договору оферты, а при поднятии PPTP соединения я идентифицирую Called-Station-Id (пограничная железка) и этот абонент привязывается к определенному диллеру совсеми вытекаюшими.

Либо иной путь - но с тем-же результатом.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 ноя 2007, 12:20 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
А что если вам просто периодически запускать задачу, вытаскивать сессии из log_session таблицы и по вызываемому номеру делать привязку? Это же можно делать по событию таймера скриптами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 ноя 2007, 12:57 
Можно и так но со скриптами без доки разобраться немогу


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 ноя 2007, 12:20 
примерчик дайте....


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 дек 2007, 14:59 
я конечно понимаю что Вы заняты - навыходе 4.4 - но игнорить тоже нельзя... если нет то скажите...


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 дек 2007, 16:57 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
что-то вроде этого (код не проверен)

Код:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Pattern;

import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractParamUtils;
import bitel.billing.server.contract.bean.ContractUtils;
import bitel.billing.server.util.TimeUtils;
import bitel.billing.server.util.Utils;

        mid = 0; //код dialup модуля
        dealerGroup = 0; //группа договоров дилеры
        unsetGroup = 0; //группа договоров непривязанные
        paramRegexpFromNumber = 0; //параметр договора дилера - regexp для from_number
        paramDealerCid = 0; //параметр договора - ссылка на договор дилера

        now = new java.util.GregorianCalendar();
        now.set( java.util.Calendar.DATE, -1 );

        tableName = Utils.getModuleMonthTableName( "log_session", now, mid );
       
        cpu = new ContractParamUtils( con );

        selectContractPS = con
                .prepareStatement( "SELECT id, title FROM contract WHERE (gr&(1<<?))>0" );

        dealerMap = new HashMap();
        print( "Select dealers:" );

        selectContractPS.setInt( 1, dealerGroup );
        selectContractRS = selectContractPS.executeQuery();
        while( selectContractRS.next() )
        {
            cid = selectContractRS.getInt( 1 );
            title = selectContractRS.getString( 2 );

            regexp = cpu.getStringParam( cid, paramRegexpFromNumber );
            dealerMap.put( cid, java.util.regex.Pattern.compile( regexp ) );

            print( title + ": " + regexp );
        }
        selectContractRS.close();

        print( "Set dealer by from_number:" );
       
        selectLoginsPS = con.prepareStatement( "SELECT id FROM user_login_" + mid + " WHERE cid=?" );

        selectContractPS.setInt( 1, unsetGroup );
        selectContractRS = selectContractPS.executeQuery();
        while( selectContractRS.next() )
        {
            cid = selectContractRS.getInt( 1 );
            title = selectContractRS.getString( 2 );

            print( "Processing " + title );
           
            logins = new StringBuilder();
           
            selectLoginsPS.setInt( 1, cid );
            selectLoginsRS = selectLoginsPS.executeQuery();
            while(selectLoginsRS.next())
            {
                logins.append( selectLoginsRS.getInt( 1 ) );
                logins.append( "," );
            }
            selectLoginsRS.close();
           
            if( logins.length() > 0 )
            {
                logins.setLength( logins.length() - 1 );
            }
            else
            {
                print( "Logins not found!" );
                continue;
            }
           
            selectFromNumberPS = con.prepareStatement( "SELECT from_number FROM " + tableName
                    + " ORDER BY session_start WHERE lid IN (" + logins + ") LIMIT 0,1" );

            rs = selectFromNumberPS.executeQuery();
            if( rs.next() )
            {
                fromNumber = rs.getString( 1 );

                iter = dealerMap.entrySet().iterator();
                while( iter.hasNext() )
                {
                    e = iter.next();
                    pattern = e.getValue();
                    dealerCid = e.getKey();
                    if( pattern.matcher( fromNumber ).matches() )
                    {
                        //устанавливаем параметр-ссылку на договор дилера
                        ps = con.prepareStatement( "UPDATE contract_parameter_type_8 SET val=? WHERE cid=? AND pid=?" );
                       
                        ps.setInt( 1, dealerCid );
                        ps.setInt( 2, cid );
                        ps.setInt( 3, paramDealerCid );
                       
                        if( ps.executeUpdate() == 0 )
                        {
                            ps.close();
                           
                            ps = con.prepareStatement( "INSERT INTO contract_parameter_type_7 (cid, pid, val) VALUES(?, ?, ?)" );
                           
                            ps.setInt( 1, cid );
                            ps.setInt( 2, paramDealerCid );
                            ps.setInt( 3, dealerCid );
                           
                            ps.executeUpdate();
                        }
                       
                        ps.close();
                       
                        cpu.unsetGroup( cid, unsetGroup ); //убираем договор из группы непривязанные

                        break;
                    }
                }
            }
           
            selectFromNumberPS.close();
        }


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

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


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

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


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

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