BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 10:39

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: продукты модуля TV
СообщениеДобавлено: 06 май 2016, 12:24 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Приветствую, поделитесь кодом добавления продуктов

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: продукты модуля TV
СообщениеДобавлено: 06 май 2016, 14:28 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
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;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: продукты модуля TV
СообщениеДобавлено: 06 май 2016, 16:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Код:
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

что ему не нравится?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: продукты модуля TV
СообщениеДобавлено: 06 май 2016, 16:28 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Тут сразу не подскажу.
Ругается на то, что аккаунт еще не заведен в MW.

Нужно как минимум вызвать после tvAccountUpdate
ServerContext context = ThreadContext.get();
context.commit();

Но потом нужно еще и как-то подождать, пока аккаунт добавиться на MW.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: продукты модуля TV
СообщениеДобавлено: 06 май 2016, 17:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Amir писал(а):
Тут сразу не подскажу.
Ругается на то, что аккаунт еще не заведен в MW.

Нужно как минимум вызвать после tvAccountUpdate
ServerContext context = ThreadContext.get();
context.commit();

Но потом нужно еще и как-то подождать, пока аккаунт добавиться на MW.

а ThreadContext.get(); - какой импорт сделать?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

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


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

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


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

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