forum.bitel.ru http://forum.bitel.ru/ |
|
продукты модуля TV http://forum.bitel.ru/viewtopic.php?f=19&t=11578 |
Страница 1 из 1 |
Автор: | skyb [ 06 май 2016, 12:24 ] |
Заголовок сообщения: | продукты модуля TV |
Приветствую, поделитесь кодом добавления продуктов |
Автор: | Amir [ 06 май 2016, 14:28 ] |
Заголовок сообщения: | Re: продукты модуля TV |
ftp://bgbilling.ru/pub/bgbilling/6.2/My ... ng-src.zip ru.bitel.mybgbilling.modules.tv.TvBean ru.bitel.mybgbilling.modules.tv.TvProductActivateBean Это наши (веб-)сервисы (которые можно использовать как веб-, так и внутри, в дин. классах): Код: @BGInject(module = false)
private ProductService productService; @BGInject(module = false) private ProductOrderService productOrderService; |
Автор: | skyb [ 06 май 2016, 16:12 ] |
Заголовок сообщения: | Re: продукты модуля TV |
Код: package ru.skyb.scripts.behavior; import java.util.Date; import java.util.List; import java.util.Set; import ru.bitel.oss.systems.inventory.product.common.bean.Product; 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.inet.api.common.bean.InetServ; import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService; 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.server.util.Setup; import ru.bitel.common.Preferences; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.contract.bean.ContractModuleManager; import ru.bitel.bgbilling.kernel.event.events.*; import ru.bitel.oss.systems.order.product.common.service.*; public class TVAgreement extends EventScriptBase { /** * ID дополнительного действия. */ private static final int ACTION_ID = 1; /** * ID модуля TV. */ private static final int MODULE_ID = 32; /** * ID типа аккаунта. */ private static final int TV_ACCOUNT_SPEC_ID = 1; /** * ID модуля INET. */ private static final int INET_MODULE_ID = 21; @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 GetAdditionalActionListEvent ) { GetAdditionalActionListEvent listEvent = (GetAdditionalActionListEvent) event; listEvent.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 { cmm.addContractModule( e.getContractId(), MODULE_ID ); ServerContext context = ServerContext.get(); InetServService wsServ = context.getService( InetServService.class, INET_MODULE_ID ); List<InetServ> servList = wsServ.inetServList( e.getContractId() ); if ( servList.size() == 0 ) { print( "сервис отсутствует" ); e.addReport( "Ошибка, обратитесь в абонентский отдел" ); return; } 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( TV_ACCOUNT_SPEC_ID ); serv.setContractId( e.getContractId() ); serv.setDateFrom( new Date() ); serv.setDateTo( null ); serv.setStatus( TvAccount.STATUS_ACTIVE ); for( InetServ is : servList ) { if (is.getDateTo() == null && (is.getTypeId() == 6 || is.getTypeId() == 3 || is.getTypeId() == 5 )) { serv.setLogin(is.getLogin()); serv.setPassword(is.getPassword()); print("is.getLogin() " + is.getLogin()); } } if( deviceId > 0 ) { serv.setDeviceId( deviceId ); } else { e.addReport( "Не указан const.device.id в конфигурации типа аккаунта." ); return; } tvAccountService.tvAccountUpdate( serv, false, false, 0 ); TvAccount root = tvAccountService.tvAccountTree( e.getContractId() ); print("serv " + root.getChildren()); e.addReport( "Услуга IPTV активирована. Ваш логин: " + serv.getLogin() + ", пароль: " + serv.getPassword() ); //TvAccount root = tvAccountService.tvAccountTree( e.getContractId() ); ProductOrderService productOrderService = context.getService( ProductOrderService.class, 0 ); ProductOrderService productOrderServiceMax = context.getService( ProductOrderService.class, 0 ); Product product = new Product(); product.setContractId( e.getContractId() ); for( TvAccount tvAccount : root.getChildren() ) { product.setAccountId( tvAccount.getId() ); } product.setDeviceState( product.STATE_ENABLED ); product.setProductSpecId( 19 ); product.setActivationModeId( 5 ); product.setTimeFrom( new Date() ); product.setComment( "Активировано клиентом" ); productOrderService.productActivate( product, false, false ); Product max = new Product(); max.setContractId( e.getContractId() ); for( TvAccount tvAccount : root.getChildren() ) { max.setAccountId( tvAccount.getId() ); } max.setDeviceState( max.STATE_ENABLED ); max.setProductSpecId( 10 ); max.setActivationModeId( 2 ); max.setTimeFrom( new Date() ); max.setComment( "Активировано клиентом" ); productOrderServiceMax.productActivate( max, false, false ); } } вылетает ошибка Код: 05-06/19:03:05 ERROR [http-bio-0.0.0.0-8443-exec-3] ScriptEventListener - Eval error: java.security.PrivilegedActionException: java.lang.Exception: ru.bitel.bgbilling.kernel.event.EventProcessorException: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. java.util.concurrent.ExecutionException: java.security.PrivilegedActionException: java.lang.Exception: ru.bitel.bgbilling.kernel.event.EventProcessorException: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:206) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:267) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScript(DynamicScriptEventListener.java:149) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.notify(DynamicScriptEventListener.java:117) at ru.bitel.bgbilling.kernel.event.LocalEventProcessor.request(LocalEventProcessor.java:240) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:907) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:876) at bitel.billing.server.contract.action.ActionAdditionalAction.doAction(ActionAdditionalAction.java:48) at bitel.billing.server.Executer.doModule(SourceFile:600) at bitel.billing.server.Executer$1.run(SourceFile:199) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at bitel.billing.server.Executer.doPost(SourceFile:193) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at ru.bitel.common.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.security.PrivilegedActionException: java.lang.Exception: ru.bitel.bgbilling.kernel.event.EventProcessorException: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener$1.call(DynamicScriptEventListener.java:241) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: java.lang.Exception: ru.bitel.bgbilling.kernel.event.EventProcessorException: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:200) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener.access$001(DynamicScriptEventListener.java:204) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener$ThreadedScriptEventListener$1$1.run(DynamicScriptEventListener.java:247) ... 8 more Caused by: ru.bitel.bgbilling.kernel.event.EventProcessorException: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. at ru.bitel.bgbilling.kernel.event.LocalEventProcessor.request(LocalEventProcessor.java:245) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:907) at ru.bitel.bgbilling.kernel.event.EventProcessor.request(EventProcessor.java:876) at ru.bitel.oss.systems.order.product.server.service.ProductOrderServiceImpl.productActivate(ProductOrderServiceImpl.java:597) at ru.skyb.scripts.behavior.TVAgreement.activate(TVAgreement.java:162) at ru.skyb.scripts.behavior.TVAgreement.onEvent(TVAgreement.java:83) at ru.bitel.bgbilling.kernel.script.server.DynamicScriptEventListener.runScriptImpl(DynamicScriptEventListener.java:196) ... 10 more Caused by: ru.bitel.bgbilling.common.BGException: Невозможно активировать продукт на приостановленном аккаунте. at ru.bitel.bgbilling.modules.tv.api.server.ProductManager.productActivate(ProductManager.java:816) at ru.bitel.bgbilling.modules.tv.api.server.Module.notify(Module.java:181) at ru.bitel.bgbilling.kernel.event.LocalEventProcessor.request(LocalEventProcessor.java:240) ... 16 more что ему не нравится? |
Автор: | Amir [ 06 май 2016, 16:28 ] |
Заголовок сообщения: | Re: продукты модуля TV |
Тут сразу не подскажу. Ругается на то, что аккаунт еще не заведен в MW. Нужно как минимум вызвать после tvAccountUpdate ServerContext context = ThreadContext.get(); context.commit(); Но потом нужно еще и как-то подождать, пока аккаунт добавиться на MW. |
Автор: | skyb [ 06 май 2016, 17:08 ] |
Заголовок сообщения: | Re: продукты модуля TV |
Amir писал(а): Тут сразу не подскажу. Ругается на то, что аккаунт еще не заведен в MW. Нужно как минимум вызвать после tvAccountUpdate ServerContext context = ThreadContext.get(); context.commit(); Но потом нужно еще и как-то подождать, пока аккаунт добавиться на MW. а ThreadContext.get(); - какой импорт сделать? |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |