BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 23 июн 2025, 04:17

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Логин и пароль
СообщениеДобавлено: 29 сен 2015, 13:33 
Не в сети

Зарегистрирован: 03 июн 2015, 14:00
Сообщения: 249
Карма: 5
Добрый день.
Подскажите пожалуйста, при добавлении нового договора в bgbilling ему навешивается модуль inet с сервисом, где присутствует логин и пароль, возможно ли при добавлении договора автоматически в качестве логина для сервиса модуля Inet подставлять номер договора а в качестве пароля пароль статистики?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 29 сен 2015, 13:40 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Сейчас вроде бы только повесить скрипт предобработки на сохранение сервиса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 29 сен 2015, 14:06 
Не в сети

Зарегистрирован: 03 июн 2015, 14:00
Сообщения: 249
Карма: 5
Случаем нет ли у Вас такого скрипта, в скриптах не силен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 29 сен 2015, 18:00 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Код:
package ru.xxx.inet;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScript;
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.server.event.InetServChangingEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

/**
 * <p>Генерирует логин и комментарий для сервисов модуля Inet.</p>
 * <p>Компилировать и запускать нужно из динамического кода клиента биллинга.
 * Динамический код нужно привязать к событию "Модуль Интернет => Изменяется сервис договора"
 * на вкладке "Функции скриптов поведения".</p>
 */
public class LoginGeneratorPub extends EventScriptBase<InetServChangingEvent> implements EventScript<InetServChangingEvent> {
   private Connection conn;

   @Override
   public void onEvent(InetServChangingEvent event, Setup setup, ConnectionSet connectionSet) throws Exception {
      conn = connectionSet.getConnection();

      ContractManager cm = new ContractManager(conn);

      Contract contract = cm.getContractById(event.getContractId());
      InetServ service = event.getInetServ();

      cm.recycle();

      String login = service.getLogin();
      if(login.isEmpty() || login.equals("999999")) {
         String prefix = contract.getTitle();
         login = prefix;

         PreparedStatement ps = connectionSet.getConnection().prepareStatement("SELECT id FROM inet_serv_" + event.getModuleId() + " WHERE login = ?");
         for(int i = 0; true; i++, login = prefix + "_" + i) {
            ps.setString(1, login);
            ResultSet rs = ps.executeQuery();

            if(!rs.first() || rs.getInt("id") == service.getId()) {
               service.setLogin(login);
               service.setPassword("passw0rd");
               break;
            }
         }

         return;
      }
   }
}

Генерирует логин сервиса Inet из номера договора и подставляет пароль. Если передан не пустой логин, то новый логин не генерируется, если просто пересохраняем сервис, то логин не генерируется.

В конфиге модуля Inet нужно прописать:
Код:
# Параметры автоматической генерации логина для сервиса
# минимальное значение логина при генерации логина
serv.login.min=999999
# максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000,
# то при генерации создастся логин 4, а не 10000001)
serv.login.max=999999


Для вашей версии могут потребоваться изменения.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 11:42 
Не в сети

Зарегистрирован: 03 июн 2015, 14:00
Сообщения: 249
Карма: 5
Cпасибо за скрипт, но ругается на что-то


Вложения:
5.png
5.png [ 85.33 КБ | Просмотров: 7725 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 12:08 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Трудно сказать, почему ему не нравиться угловая скобочка. Попробуйте удалить <InetServChangingEvent> в определении класса.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 12:34 
Не в сети

Зарегистрирован: 03 июн 2015, 14:00
Сообщения: 249
Карма: 5
В управлении динамическим кодом при компиляции тоже ругается


Вложения:
6.png
6.png [ 64.69 КБ | Просмотров: 7721 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 14:53 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
lexusrid писал(а):
Cпасибо за скрипт, но ругается на что-то


вам дали динамических код, а вы его как bgbs пытаетесь использовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 14:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
lexusrid писал(а):
В управлении динамическим кодом при компиляции тоже ругается


LoginGereratorPub должно быть именем класса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 15:07 
Не в сети

Зарегистрирован: 03 июн 2015, 14:00
Сообщения: 249
Карма: 5
Спасибо всем огромное, разобрались, все теперь работает как надо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 16:43 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
lexusrid писал(а):
Спасибо всем огромное, разобрались, все теперь работает как надо

Уверены, что "как надо"? Слишком быстро ответили. Считаю, что такие вещи надо хорошо тестировать, со всех сторон. И при создании договора проверить, и при создании отдельно сервиса, и при изменении существующего сервиса, и с пустым логином, и с заполненным и т. п. А то в неожиданном месте вылезет, и в авральном режиме придётся всё исправлять.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 17:29 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
а еще добавить
Код:
rs.close(); ps.close();

и пароль правильный ставить.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 30 сен 2015, 17:45 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Phricker писал(а):
а еще добавить
Код:
rs.close(); ps.close();

А ведь и правда, close() не хватает. Свой код поправил...
И опять плюс поставить не могу... :(

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 01 окт 2015, 00:36 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Хотел сделать, чтобы выдавалась ошибка в клиенте если такой логин уже есть.
Плюс немножко переписал.
Но не пошло. Ошибка бросается и есть в логах, но в клиенте не отображается.
Но не пропадать же добру :D


Код:
package ru.ellcom.modules.inet;

import java.sql.Connection;
import java.util.List;

import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScript;
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.server.bean.InetServDao;
import ru.bitel.bgbilling.modules.inet.api.server.event.InetServChangingEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

/**
 * Генерирует логин и комментарий для сервисов модуля Inet.
 * Компилировать и запускать нужно из динамического кода клиента биллинга.
 * Динамический код нужно привязать к событию "Модуль Интернет => Изменяется сервис договора"
 * на вкладке "Функции скриптов поведения".
 */

public class LoginGeneratorPub extends EventScriptBase<InetServChangingEvent> implements EventScript<InetServChangingEvent> {
    private Connection con;

    @Override
    public void onEvent(InetServChangingEvent event, Setup setup, ConnectionSet connectionSet) throws Exception {
        con = connectionSet.getConnection();

        ContractManager cm = new ContractManager(con);
        InetServDao inetServDao = new InetServDao(setup, con, event.getModuleId(), event.getUserId());

        Contract contract = cm.getContractById(event.getContractId());
        InetServ service = event.getInetServ();
        String newLogin = contract.getTitle();
        String newPassword = contract.getPswd();

        cm.recycle();

        List<InetServ> list = inetServDao.list(newLogin, service.getDateFrom(), service.getDateTo());
        for (InetServ s : list)
            if (s.getId() != service.getId()) {
                 throw new BGMessageException("Логин " + newLogin + " уже используется");
            }
        service.setLogin(newLogin);
        service.setPassword(newPassword);
        inetServDao.update(service);

    }
}


Код:
script 09-30/21:30:47 ERROR [http-bio-0.0.0.0-8080-exec-6] ScriptEventListener - java.util.concurrent.ExecutionException: java.security.PrivilegedActionException: java.lang.Exception: ru.bitel.bgbilling.common.BGMessageException: Логин 1
01000009 уже используется

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 01 окт 2015, 12:12 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Если логин уже используется, то ошибка бросается стандартной логикой биллинга и в скрипте её выкидывать не обязательно. Ну и через list, конечно, более правильно.

А зачем inetServDao.update(service) добавили? Вроде здесь не нужно. И если добавили, то нужно евенты кидать. Лучше тогда переписать на InetServService.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логин и пароль
СообщениеДобавлено: 01 окт 2015, 12:15 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Ошибка бросается, но ее не видно в клиенте.
А я думал таким образом может покажется :D

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


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

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


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

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


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

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