forum.bitel.ru http://forum.bitel.ru/ |
|
Связка тарифного плана и шлюза http://forum.bitel.ru/viewtopic.php?f=22&t=270 |
Страница 1 из 1 |
Автор: | Lavrenov_Sergey [ 13 июн 2007, 19:53 ] |
Заголовок сообщения: | Связка тарифного плана и шлюза |
Клиенту даем доступ в интернет с ограничением по скорости 128 кб/с. В договоре прописываем тарифный план и в модуле IPN с помощью шлюза типа Manad ограничиваем скорость до 128 кб/с. Если клиент через Web-интерфейс изменяет свой тарифный план (например на 256 кб/с), как автоматически изменить и шлюз, чтобы ограничение стало 256 кб/с? |
Автор: | Администратор [ 14 июн 2007, 00:19 ] |
Заголовок сообщения: | |
Необходимо встроить в скрипт смены тарифа. Обязательное требование - правила манада должны быть типизированы, т.е. не вбиты вручную в каждом договоре. Если нет - то нужно править само правило, вытаскивать адреса. Установку типа правила нужно делать в зависимости от нового тарифа. Попробуйте, будут проблемы - пишите. Код: import bitel.billing.server.ipn.bean.*;
// вместо mid поставьте код вашего модуля IPN ugrm = new UserGateRuleManager( con, mid ) rule = ugrm.getUserGateRules( cid ).get( 0 ); rule.setRuleTypeId( <новый тип правила> ); ugrm.updateUserGateRule( String.valueOf( rule.getId() ), rule ) ; // обновление правила на манаде csm = new ContractStatusManager( con, mid ); status = csm.getContractStatus( cid ); // открытие и закрытие шлюза csm.changeStatus( cid, 1, userID.intValue(), true ); csm.changeStatus( cid, status, userID.intValue(), true ); |
Автор: | msh [ 13 апр 2008, 22:15 ] |
Заголовок сообщения: | |
как узнать Id типа правила? у меня в клиенте под linux в модули->IPN-> типы правил Ctrl-i не работает |
Автор: | stark [ 14 апр 2008, 16:30 ] |
Заголовок сообщения: | |
msh писал(а): как узнать Id типа правила? у меня в клиенте под linux в модули->IPN-> типы правил Ctrl-i не работает
Там эта функция не поддерживалась , модуль ipn для версии 4.4 обновлен |
Автор: | msh [ 19 апр 2008, 21:00 ] |
Заголовок сообщения: | |
вот написал скрипт смены тарифа по заданию пользователя с изменением типа шлюза Код: import bitel.billing.server.contract.bean.*;
import bitel.billing.server.tariff.bean.*; import bitel.billing.server.script.event.*; import bitel.billing.server.ipn.bean.*; import java.util.*; cid = event.getContractID(); task = event.getTask(); ctm = new ContractTariffManager( con ); // текущий тарифный план currentTariff = ctm.getContractTariff( cid, task.getFromDate() ); if( currentTariff == null ) { error( "Current tariff not found" ); return; } // закрываем старый тариф днем ранее endDate = (Calendar)task.getFromDate().clone(); endDate.add( Calendar.DAY_OF_YEAR, -1 ); currentTariff.setDate2( endDate ); ctm.updateContractTariff( String.valueOf( currentTariff.getID() ), currentTariff ); // вносим новый тариф newPlan = new ContractTariff(); newPlan.setContractID( cid ); newPlan.setTariffPlanID( task.getTariffPlanID()); newPlan.setDate1( task.getFromDate() ); newPlan.setComment( "Смена тарифа через Web" ); ctm.updateContractTariff( "new", newPlan ); // получаем ID нового тарифного плана - по нему будем определять правило шлюза newPlanID=task.getTariffPlanID(); switch ( newPlanID ){ case 4: // план тестовый 256кбит/с ruleTypeID=11; break; case 3: // план базовый 1 Мбит/с ruleTypeID=1; default: // 64 кбит/с ruleTypeID=14; } // выставляем тип правила шлюза для данного тарифа // вместо mid поставьте код вашего модуля IPN ugrm = new UserGateRuleManager( con, 3 ) rule = ugrm.getUserGateRules( cid ).get( 0 ); rule.setRuleTypeId(ruleTypeID); ugrm.updateUserGateRule( String.valueOf( rule.getId() ), rule ) ; // обновление правила на манаде csm = new ContractStatusManager( con, 3 ); status = csm.getContractStatus( cid ); // открытие и закрытие шлюза csm.changeStatus( cid, 1, userID.intValue(), true ); csm.changeStatus( cid, status, userID.intValue(), true ); возникли вследующие вопросы: 1)как проверить его работу не дожидаясь первого мая и не меняя время на сервере 2)зачем в последних 2х строчках скрипта (а они взяты из рекомендвции Администратора) сначала производится открытие шлюза а затем закрытие? по идее было бы логично наоборот 3)очень тяжко прописавать в скипте соответствие между ID тарифа и ID правила шлюза - может добавить возможность присваивать в тарифе свои параметры, а потом читать их в скрипте? |
Автор: | Администратор [ 21 апр 2008, 11:53 ] |
Заголовок сообщения: | |
1. Там есть в группе тарифов свойство "Исполнять переход за.. часов". Поставьте побольше, сразу отработает. 2. Да, нужно сначала закрыть, потом открыть. Чего-то я не то сказал, наверное. 3. Пока ничем помочь не можем, в перспективе будем делать в биллинге завязку тарифов с правилами, так что промежуточные действия нам не особо интересны. |
Автор: | msh [ 27 апр 2008, 01:00 ] |
Заголовок сообщения: | |
в 4.4 теперь надо так обновление правил делать? метода csm.getContractStatus в 4.4 больше нет почему-то csm.getStatus возвращает null Код: // обновление правила на манаде
cid = event.getContractID(); time = event.getGenerateTime(); csm = new ContractStatusManager( con); status = csm.getStatus( cid, time); if (status == null){ error("no status"); return; } // закрытие и открытие шлюза (1-шлюз закрыт) status.setStatus(1); csm.changeStatus( status); status = csm.getStatus( cid, time); csm.changeStatus( status); |
Автор: | Администратор [ 28 апр 2008, 13:13 ] |
Заголовок сообщения: | |
Класс ContractStatusManager переименован в IPNContractStatusManager, функция осталась. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |