forum.bitel.ru http://forum.bitel.ru/ |
|
Список договоров у которых будет Reject http://forum.bitel.ru/viewtopic.php?f=44&t=10233 |
Страница 1 из 1 |
Автор: | Угрюмов Роман [ 27 фев 2015, 13:40 ] |
Заголовок сообщения: | Список договоров у которых будет Reject |
Есть ли способ через SQL запрос к таблицам БД сформировать список договоров, у которых подключен модуль Inet и присутствует сервис Inet для которых при авторизации в текущий момент биллинг выдаст Reject? То есть другими словами получить список всех, кому мы откажем в авторизации? Независимо от причины. Ну и второй вопрос, оставлю тут его. Есть ли способ для группы договором, всем понизить лимит до некой суммы? Я пытался в таблице contract в поле closesumma записать новое значение, но в карточке договора лимит не изменился хотелось бы обойтись без (Через limitManager.updateContractLimit(0, limit, cid, "Установка лимита", ""); //меняем лимит:) |
Автор: | Phricker [ 27 фев 2015, 13:53 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
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." ); } } |
Автор: | Phricker [ 27 фев 2015, 13:57 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
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. |
Автор: | Угрюмов Роман [ 27 фев 2015, 14:13 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
Не все так просто! в таблице 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)); то все равно сервис остается в состоянии отключен! |
Автор: | Phricker [ 27 фев 2015, 14:42 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
Код: 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: Перенес скрипт в вики, поправил всякую ерунду |
Автор: | Угрюмов Роман [ 27 фев 2015, 15:04 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
С лимитом попробую чуть позже, вы наверное не обратили внимание При отключении по балансу поле status в таблицах contract и inet_serv не обновляется! Я это только что обнаружил, я меняю в админке лимит, вижу изменение статуса сервиса, а поле status не изменяется! Это наверное не давно началось, поскольку раньше я такие договора именно подобным вашему запросу и вычислял |
Автор: | Phricker [ 27 фев 2015, 15:09 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
А inet_serv_{MID}.accessCode меняется? |
Автор: | Amir [ 27 фев 2015, 15:09 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
status не меняется - потому что это выпадающий список Статус в редакторе сервиса, который тоже сам не меняется. Меняется deviceState. Но если не пустит из-за ошибки превышено кол-во активных сессий - этот случай никак не коррелируется с deviceState. Состояние deviceState: -1 - удален, 0 - отключен, 1 - включен. |
Автор: | Phricker [ 27 фев 2015, 15:11 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
Amir писал(а): Меняется deviceState. Но если не пустит из-за ошибки превышено кол-во активных сессий - этот случай никак не коррелируется с deviceState. Проверяю на PPPoE логине - там меняется accessCode а не deviceState. deviceState изменился на -1 только для дочернего сервиса (тоже логина) |
Автор: | Amir [ 27 фев 2015, 15:14 ] |
Заголовок сообщения: | Re: Список договоров у которых будет Reject |
Нужно смотреть именно на родительском сервисе. Не меняться может из-за особенностей тарифа (действует ветка Авторизировать игнорируя ошибку баланса) или в определенных ситуациях если пока нет активной сессии и не настроен serv.tracking http://bgbilling.ru/v6.1/doc/ch17s07s01.html |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |