BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 27 фев 2015, 13:40 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Есть ли способ через SQL запрос к таблицам БД сформировать список договоров, у которых подключен модуль Inet и присутствует сервис Inet для которых при авторизации в текущий момент биллинг выдаст Reject? То есть другими словами получить список всех, кому мы откажем в авторизации? Независимо от причины.

Ну и второй вопрос, оставлю тут его. Есть ли способ для группы договором, всем понизить лимит до некой суммы?
Я пытался в таблице contract в поле closesumma записать новое значение, но в карточке договора лимит не изменился
хотелось бы обойтись без (Через limitManager.updateContractLimit(0, limit, cid, "Установка лимита", ""); //меняем лимит:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 13:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
2
Дин. код.
Предварительно удаляет все задачи по возвращению временных лимитов
Код:
package ru.ellcom.test;

import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.LimitChangeTask;
import bitel.billing.server.contract.bean.LimitManager;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.List;

public class LimitVip
   extends GlobalScriptBase
{
   @Override
   public void execute( Setup setup, ConnectionSet connectionSet )
      throws Exception
   {
      int groupId = 1;
      int count = 0;

      print("Start");
      Connection con  = connectionSet.getConnection();
      ContractManager cm = new ContractManager(con);
      LimitManager lm = new LimitManager(con);
            
      long timeStart = System.currentTimeMillis();
      String query =    " SELECT c.id FROM contract AS c WHERE c.gr&(1<<"+ groupId +") > 0";
      java.sql.PreparedStatement ps = con.prepareStatement( query );
      ResultSet rs = ps.executeQuery();

      while ( rs.next() )
      {
         int cid = rs.getInt("c.id");
         List<LimitChangeTask> taskList = lm.getContractMoveTasks(cid);
         for (LimitChangeTask task : taskList) {
            lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());
         }
         BigDecimal limit = new BigDecimal(-10000000);
         lm.updateContractLimit(User.USER_SERVER, limit, cid, "Лимит выставленный VIP абонентам", "");
         count++;
      }
      rs.close();
      ps.close();
      long timeEnd = System.currentTimeMillis();
      print( "Count = " + count);
      print( "Process time: " + (timeEnd - timeStart)/1000 + " s." );
            
   }
}


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


Последний раз редактировалось Phricker 27 фев 2015, 13:57, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 13:57 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
1
Код:
SELECT c.id, c.title, c.comment, s.title, s.status
FROM contract AS c
LEFT JOIN inet_serv_12 AS s ON s.contractId = c.id
WHERE s.contractId IS NOT NULL
AND s.status <> 0


p.s. временами вымораживает что в новых модулях ушли от table_name.cid для обозначения ID договора, и пришли к contractId.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 14:13 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Не все так просто!
в таблице inet_serv поле status не обновляется, когда сервис переходит в состояние отключенное из-за баланса к примеру. Я вижу договор, у которого сервис отключен и по которому получаю Reject, но status = 0

Код:
lm.updateContractLimit(User.USER_SERVER, limit, cid, "Лимит выставленный VIP абонентам", "");
- работает очень странно
Лимит то она понижает, но инет-сервис все равно остается в состоянии отключен! Однако если из админки понизить лимит, то сервис совершенно корректно переходит в статус "включен"!
даже если так сделать:
Код:
              Payment fakePayment = new Payment();//гененрируем событие изменения лимита:
              fakePayment.setContractID(cid);
              fakePayment.setPaymentTypeID(-1);
              fakePayment.setDate(new Date());
              fakePayment.setUserID(-1);
              EventProcessor.getInstance().publish( new PaymentEvent(0, fakePayment));

то все равно сервис остается в состоянии отключен!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 14:42 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код:
SELECT c.id, c.title, c.comment, c.status, s.title, s.status
FROM contract AS c
LEFT JOIN inet_serv_12 AS s ON s.contractId = c.id
WHERE s.contractId IS NOT NULL
AND c.status <> 0


С лимитом и правда косяк.
Мне не нужно было бросать уведомление о смене лимита. Не помню уже почему.
Попробуйте так.


UPD: Перенес скрипт в вики, поправил всякую ерунду

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 15:04 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
С лимитом попробую чуть позже, вы наверное не обратили внимание
При отключении по балансу поле status в таблицах contract и inet_serv не обновляется!
Я это только что обнаружил, я меняю в админке лимит, вижу изменение статуса сервиса, а поле status не изменяется!
Это наверное не давно началось, поскольку раньше я такие договора именно подобным вашему запросу и вычислял


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 фев 2015, 15:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
А inet_serv_{MID}.accessCode меняется?

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


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
status не меняется - потому что это выпадающий список Статус в редакторе сервиса, который тоже сам не меняется.
Меняется deviceState.
Но если не пустит из-за ошибки превышено кол-во активных сессий - этот случай никак не коррелируется с deviceState.

Состояние deviceState: -1 - удален, 0 - отключен, 1 - включен.


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

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Amir писал(а):
Меняется deviceState.
Но если не пустит из-за ошибки превышено кол-во активных сессий - этот случай никак не коррелируется с deviceState.

Проверяю на PPPoE логине - там меняется accessCode а не deviceState.
deviceState изменился на -1 только для дочернего сервиса (тоже логина)

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


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Нужно смотреть именно на родительском сервисе.

Не меняться может из-за особенностей тарифа (действует ветка Авторизировать игнорируя ошибку баланса) или в определенных ситуациях если пока нет активной сессии и не настроен serv.tracking
http://bgbilling.ru/v6.1/doc/ch17s07s01.html


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

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


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

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


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

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