forum.bitel.ru http://forum.bitel.ru/ |
|
Обработка дополнительного действия http://forum.bitel.ru/viewtopic.php?f=22&t=12490 |
Страница 1 из 1 |
Автор: | SEA-Jay [ 07 июн 2017, 10:34 ] |
Заголовок сообщения: | Обработка дополнительного действия |
Есть дополнительное действие для добавления модуля телевидения и аккаунта. Покабыло 1 действие проблем не было, добавили другой тип аккаунта, но из класса скриптов поведения отрабатывается только 1 классы ява код 5 | смотреш | Обработка доп. действия для договора | ru.bitel.bgbilling.modules.tv.dyn.addactions.AddModuleProcessor 7 | медиаоператор | Обработка доп. действия для договора | ru.bitel.bgbilling.modules.tv.dyn.addactions.AddModuleMoovi скрипт BGBS import bitel.billing.server.contract.bean.*; cid = event.getContractId(); cm = new ContractManager( con ); contract = cm.getContractById( cid ); if( contract == null ) { error( "Contract not found!" ); return; } if( contract.getTitle().contains( "Ин-Ф" ) ) { event.addAction(7, "Активация ТВ Moovi" ); event.addAction(5, "Активация ТВ Смотрешка" ); } т.е. чтобы мы не выбрали в дополнительном действии всегда создается один и тот же аккаунт. в данном случае муви. если удалить класс муви будет создаваться смотрешка. такое ощущение что не отрабатывается код класса или я что то делаю не правильно? |
Автор: | Phricker [ 07 июн 2017, 11:16 ] |
Заголовок сообщения: | Re: Обработка дополнительного действия |
Код классов Java покажите тоже |
Автор: | SEA-Jay [ 08 июн 2017, 06:07 ] |
Заголовок сообщения: | Re: Обработка дополнительного действия |
AddModuleProcessor Код: package ru.bitel.bgbilling.modules.tv.dyn.addactions; import java.util.Date; import java.util.Set; import java.lang.Object; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.event.Event; import ru.bitel.bgbilling.kernel.event.events.AdditionalActionEvent; import ru.bitel.bgbilling.kernel.event.events.GetAdditionalWebActionListEvent; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.modules.tv.api.common.bean.TvAccount; import ru.bitel.bgbilling.modules.tv.api.common.bean.TvAccountSpec; import ru.bitel.bgbilling.modules.tv.api.common.service.TvAccountService; import ru.bitel.bgbilling.modules.tv.dyn.TvDynUtils; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.Preferences; import ru.bitel.common.ParameterMap; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.contract.bean.ContractModuleManager; import bitel.billing.server.contract.bean.ContractParameterManager; import ru.bitel.common.Utils; public class AddModuleProcessor extends EventScriptBase { /** * ID дополнительного действия. */ private static final int ACTION_ID = 18; /** * ID модуля TV. */ private static final int MODULE_ID = 18; private static final int EMAIL_ID = 7; /** * ID типа аккаунта. */ private static final int TV_ACCOUNT_SPEC_ID = 1; @Override public void onEvent( Event event, Setup setup, ConnectionSet connectionSet ) throws Exception { if( event instanceof GetAdditionalWebActionListEvent ) { GetAdditionalWebActionListEvent e = (GetAdditionalWebActionListEvent)event; ContractModuleManager cmm = new ContractModuleManager( connectionSet.getConnection() ); Set<Integer> mids = cmm.getContractModuleSet( e.getContractId() ); if( mids.contains( MODULE_ID ) ) { return; } ((GetAdditionalWebActionListEvent)event).addAction( ACTION_ID, "Активировать IPTV" ); } else if( event instanceof AdditionalActionEvent ) { AdditionalActionEvent e = (AdditionalActionEvent)event; ContractModuleManager cmm = new ContractModuleManager( connectionSet.getConnection() ); Set<Integer> mids = cmm.getContractModuleSet( e.getContractId() ); if( mids.contains( MODULE_ID ) ) { return; } activate( connectionSet, cmm, e ); } } private void activate( final ConnectionSet connectionSet, final ContractModuleManager cmm, final AdditionalActionEvent e ) throws BGException { ContractParameterManager cpm = new ContractParameterManager( connectionSet.getConnection() ); String email = TvDynUtils.getPhone( cpm, e.getContractId(), EMAIL_ID ); if (email != null && email.contains( "9" )) { email = email.replaceAll( ".*<(.+?)>.*", "$1" ); } if(Utils.isBlankString( email ) || !email.contains( "9" )) { // e.addReport( "В параметрах договора не указан E-mail. Перейдите в параметры, нажмите правка и укажите свой E-mail." ); e.addReport( "В параметрах договора не указан телефон. Перейдите в параметры, нажмите правка и укажите свой Телефон." ); return; } cmm.addContractModule( e.getContractId(), MODULE_ID ); ServerContext context = ServerContext.get(); TvAccountService tvAccountService = context.getService( TvAccountService.class, MODULE_ID ); final TvAccountSpec servType = context.getDirectory( TvAccountSpec.class, MODULE_ID ).get( TV_ACCOUNT_SPEC_ID ); Preferences servTypeConfig = new Preferences( servType.getConfig(), "\n\r" ); int deviceId = servTypeConfig.getInt( "const.device.id", -1 ); final TvAccount serv = new TvAccount(); serv.setSpecId( 1 ); serv.setContractId( e.getContractId() ); serv.setDateFrom( new Date() ); serv.setDateTo( null ); serv.setStatus( TvAccount.STATUS_ACTIVE ); if( deviceId > 0 ) { serv.setDeviceId( deviceId ); } else { e.addReport( "Не указан const.device.id в конфигурации типа аккаунта." ); return; } tvAccountService.tvAccountUpdate( serv, true, true, 0 ); e.addReport( "Услуга Смотрешка-TV активирована. Ваш логин: " + serv.getLogin() + " , пароль отправлен в SMS на указанный в договоре номер. \n\r "); e.addReport( " Для просмотра ТВ, Вам необходимо активировать подписку на пакет телеканалов. Для этого перейдите в меню - TV-подписки и нажмите -Активировать подписку- и выберите нужный Вам пакет."); } } AddModuleMoovi Код: package ru.bitel.bgbilling.modules.tv.dyn.addactions;
import java.util.Date; import java.util.Set; import java.lang.Object; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.event.Event; import ru.bitel.bgbilling.kernel.event.events.AdditionalActionEvent; import ru.bitel.bgbilling.kernel.event.events.GetAdditionalWebActionListEvent; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.modules.tv.api.common.bean.TvAccount; import ru.bitel.bgbilling.modules.tv.api.common.bean.TvAccountSpec; import ru.bitel.bgbilling.modules.tv.api.common.service.TvAccountService; import ru.bitel.bgbilling.modules.tv.dyn.TvDynUtils; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.Preferences; import ru.bitel.common.ParameterMap; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.contract.bean.ContractModuleManager; import bitel.billing.server.contract.bean.ContractParameterManager; import ru.bitel.common.Utils; public class AddModuleMoovi extends EventScriptBase { /** * ID дополнительного действия. */ private static final int ACTION_ID = 18; /** * ID модуля TV. */ private static final int MODULE_ID = 18; private static final int EMAIL_ID = 7; /** * ID типа аккаунта. */ private static final int TV_ACCOUNT_SPEC_ID = 2; @Override public void onEvent( Event event, Setup setup, ConnectionSet connectionSet ) throws Exception { if( event instanceof GetAdditionalWebActionListEvent ) { GetAdditionalWebActionListEvent e = (GetAdditionalWebActionListEvent)event; ContractModuleManager cmm = new ContractModuleManager( connectionSet.getConnection() ); Set<Integer> mids = cmm.getContractModuleSet( e.getContractId() ); if( mids.contains( MODULE_ID ) ) { return; } ((GetAdditionalWebActionListEvent)event).addAction( ACTION_ID, "Активировать IPTV" ); } else if( event instanceof AdditionalActionEvent ) { AdditionalActionEvent e = (AdditionalActionEvent)event; ContractModuleManager cmm = new ContractModuleManager( connectionSet.getConnection() ); Set<Integer> mids = cmm.getContractModuleSet( e.getContractId() ); if( mids.contains( MODULE_ID ) ) { return; } activate( connectionSet, cmm, e ); } } private void activate( final ConnectionSet connectionSet, final ContractModuleManager cmm, final AdditionalActionEvent e ) throws BGException { ContractParameterManager cpm = new ContractParameterManager( connectionSet.getConnection() ); String email = TvDynUtils.getPhone( cpm, e.getContractId(), EMAIL_ID ); if (email != null && email.contains( "9" )) { email = email.replaceAll( ".*<(.+?)>.*", "$1" ); } if(Utils.isBlankString( email ) || !email.contains( "9" )) { // e.addReport( "В параметрах договора не указан E-mail. Перейдите в параметры, нажмите правка и укажите свой E-mail." ); e.addReport( "В параметрах договора не указан телефон. Перейдите в параметры, нажмите правка и укажите свой Телефон." ); return; } cmm.addContractModule( e.getContractId(), MODULE_ID ); ServerContext context = ServerContext.get(); TvAccountService tvAccountService = context.getService( TvAccountService.class, MODULE_ID ); final TvAccountSpec servType = context.getDirectory( TvAccountSpec.class, MODULE_ID ).get( TV_ACCOUNT_SPEC_ID ); Preferences servTypeConfig = new Preferences( servType.getConfig(), "\n\r" ); int deviceId = servTypeConfig.getInt( "const.device.id", -1 ); final TvAccount serv = new TvAccount(); serv.setSpecId( 2 ); serv.setContractId( e.getContractId() ); serv.setDateFrom( new Date() ); serv.setDateTo( null ); serv.setStatus( TvAccount.STATUS_ACTIVE ); if( deviceId > 0 ) { serv.setDeviceId( deviceId ); } else { e.addReport( "Не указан const.device.id в конфигурации типа аккаунта." ); return; } tvAccountService.tvAccountUpdate( serv, true, true, 0 ); e.addReport( " Услуга IP-телевидения Moovi активирована. Ваш логин: " + serv.getLogin() + " , пароль: " + serv.getPassword() + "<br />"); e.addReport( " Сохраните их в надежном месте! <br /> " ); e.addReport( " Подписываясь на пакет ТВ, Вы принимаете условия предоставления услуг и оплаты по <a href='?action=GetCards&mid=contract&id=tv-moovi.xsl&title=0JTQvtCz0L7QstC-0YAgSVBUViDQnNC10LTQuNCw0J7Qv9C10YDQsNGC0L7RgA==p'>Договору оферты. Скачать. </a> <br />"); e.addReport( " Для просмотра ТВ, Вам необходимо активировать подписку на пакет телеканалов. Для этого перейдите в меню - TV-подписки и нажмите -Активировать подписку- и выберите нужный Вам пакет. <br />"); e.addReport( " Если пункт TV подписки не отображается, выйдите из личного кабинета и войдите по новой. Не забудьте сохранить или записать пароль."); } } |
Автор: | SEA-Jay [ 15 июн 2017, 18:41 ] |
Заголовок сообщения: | Re: Обработка дополнительного действия |
Никто не подскажет в чем проблема? |
Автор: | Amir [ 15 июн 2017, 20:44 ] |
Заголовок сообщения: | Re: Обработка дополнительного действия |
Дополнительные действия работают так: обработчик (или обработчики) получения списка действий добавляет один или несколько действий, с указанием какого-то уникального ID действия. Далее при вызове доп. действия вызываются все обработчики доп. действия, т.к. все они висят как слушатели события вызова доп. действия. А уже сам обработчик должен фильтровать, выполнятся ему или нет. В вашем случае ACTION_ID должен быть разным, а при обработке AdditionalActionEvent нужно проверять, что AdditionalActionEvent.getActionId() совпадает с ACTION_ID (что это не какое-то другое действие вызывают). |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |