forum.bitel.ru http://forum.bitel.ru/ |
|
Так возможно-ли както привязать пользователя к диллеру? http://forum.bitel.ru/viewtopic.php?f=1&t=580 |
Страница 1 из 1 |
Автор: | dsheptalin [ 27 ноя 2007, 18:04 ] |
Заголовок сообщения: | Так возможно-ли както привязать пользователя к диллеру? |
Так возможно-ли както привязать пользователя к диллеру а не к платежам (только не субдоговор)? |
Автор: | Администратор [ 27 ноя 2007, 20:43 ] |
Заголовок сообщения: | |
Опишите задачу подробнее. Что означает привязывание? |
Автор: | dsheptalin [ 29 ноя 2007, 11:53 ] |
Заголовок сообщения: | |
по параметру: Called-Station-Id в модуле DialUP привязывать договор к определенным Диллерам... Задача - домовые сети (интернет кафе, группы абонентов) ставят беспроводную железку у себя в сети как пограничную, абоненты регистрируются по договору оферты, а при поднятии PPTP соединения я идентифицирую Called-Station-Id (пограничная железка) и этот абонент привязывается к определенному диллеру совсеми вытекаюшими. Либо иной путь - но с тем-же результатом. |
Автор: | Администратор [ 29 ноя 2007, 12:20 ] |
Заголовок сообщения: | |
А что если вам просто периодически запускать задачу, вытаскивать сессии из log_session таблицы и по вызываемому номеру делать привязку? Это же можно делать по событию таймера скриптами. |
Автор: | dsheptalin [ 29 ноя 2007, 12:57 ] |
Заголовок сообщения: | |
Можно и так но со скриптами без доки разобраться немогу |
Автор: | dsheptalin [ 30 ноя 2007, 12:20 ] |
Заголовок сообщения: | |
примерчик дайте.... |
Автор: | dsheptalin [ 04 дек 2007, 14:59 ] |
Заголовок сообщения: | |
я конечно понимаю что Вы заняты - навыходе 4.4 - но игнорить тоже нельзя... если нет то скажите... |
Автор: | Amir [ 04 дек 2007, 16:57 ] |
Заголовок сообщения: | |
что-то вроде этого (код не проверен) Код: 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(); } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |