BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 07 июн 2017, 10:34 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
Есть дополнительное действие для добавления модуля телевидения и аккаунта.

Покабыло 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, "Активация ТВ Смотрешка" );
}


т.е. чтобы мы не выбрали в дополнительном действии всегда создается один и тот же аккаунт. в данном случае муви.
если удалить класс муви будет создаваться смотрешка.

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

или я что то делаю не правильно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 июн 2017, 11:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код классов Java покажите тоже

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 июн 2017, 06:07 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
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 подписки не отображается, выйдите из личного кабинета и войдите по новой. Не забудьте сохранить или записать пароль.");
   }
}


Последний раз редактировалось dimOn 08 июн 2017, 12:00, всего редактировалось 1 раз.
code


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2017, 18:41 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
Никто не подскажет в чем проблема?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2017, 20:44 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Дополнительные действия работают так: обработчик (или обработчики) получения списка действий добавляет один или несколько действий, с указанием какого-то уникального ID действия.
Далее при вызове доп. действия вызываются все обработчики доп. действия, т.к. все они висят как слушатели события вызова доп. действия.
А уже сам обработчик должен фильтровать, выполнятся ему или нет.

В вашем случае ACTION_ID должен быть разным, а при обработке AdditionalActionEvent нужно проверять, что AdditionalActionEvent.getActionId() совпадает с ACTION_ID (что это не какое-то другое действие вызывают).


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


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

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