forum.bitel.ru
http://forum.bitel.ru/

Изменение лимита
http://forum.bitel.ru/viewtopic.php?f=19&t=11227
Страница 1 из 1

Автор:  Alick [ 15 дек 2015, 12:14 ]
Заголовок сообщения:  Изменение лимита

Необходимо написать скрипт, который будет менять лимит определённым пользователям.
Скажу сразу - этот пример не заработал http://wiki.bitel.ru/index.php/%D0%98%D ... 0%BE%D0%B2.

Переделал из другого скрипта, который закрывал/открывал шлюзы на договорах, вот такой:

import bitel.billing.server.util.*;
import bitel.billing.server.ipn.bean.*;

import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.event.QueueEvent;
import ru.bitel.bgbilling.kernel.event.events.LimitChangedEvent;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


import java.math.BigDecimal;


public void main( setup, con, conSlave )
{

BigDecimal limit = new BigDecimal(-30);

st = con.prepareStatement("SELECT contract.id, contract.comment FROM contract WHERE contract.id = 2255 ");
rs = st.executeQuery();
gm = new IPNContractStatusManager(con, 1, setup.getSetup().getModuleSetup(1));


while(rs.next())
{
dm = new LimitChangedEvent(rs.getInt(1), limit);
print("cid: "+rs.getInt(1)+" - "+" лимит " + dm.getNewLimit() );
}


}

Это тестовый пример. Мне главное получить результат хотя бы на одном договоре. Результат работы скрипта:

GENERATE_TIME: 15.12.15 09:54:10
EXECUTION_STOP_TIME: 15.12.15 09:54:10
PROCESS_TIME: 15

OUT:
cid: 2255 - лимит -30

Как по результату ответа, лимит на договоре должен был бы измениться, но на самом деле никаких изменений нет. Помогите разобраться, в чём моя ошибка. Версия билинга 5.2.

Автор:  Phricker [ 15 дек 2015, 12:19 ]
Заголовок сообщения:  Re: Изменение лимита

Код:
LimitManager lm = new LimitManager(con);
ServerContext context = ServerContext.get();
....
while(rs.next())
{
int cid = rs.getInt(1);
lm.updateContractLimit(User.USER_SERVER, limit, cid, "Блаблабла", "");
                context.publishAfterCommit(new SystemLimitChangedEvent(cid, limit));
                context.publishAfterCommit(new LimitChangedEvent(cid, limit));
                context.commit();
print("cid: "+cid+" - "+" лимит " + dm.getNewLimit() );
}   

Автор:  Alick [ 15 дек 2015, 12:45 ]
Заголовок сообщения:  Re: Изменение лимита

Спасибо за подсказку, но я уже пробовал этот вариант. Выходит ошибка:

GENERATE_TIME: 15.12.15 10:25:34
EXECUTION_STOP_TIME: 15.12.15 10:25:34
PROCESS_TIME: 18

OUT:


EXCEPTIONS:
Typed variable declaration : Class: LimitManager not found in namespace
Typed variable declaration : Class: LimitManager not found in namespace : at Line: 19 : in file: 111 : LimitManager

Called from method: main : at Line: -1 : in file: <Called from Java Code> : <Compiled Java Code>
at bsh.BSHAmbiguousName.toClass(BSHAmbiguousName.java:74)
at bsh.BSHType.getType(BSHType.java:154)
at bsh.BSHTypedVariableDeclaration.eval(BSHTypedVariableDeclaration.java:75)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BshMethod.invokeImpl(BshMethod.java:362)
at bsh.BshMethod.invoke(BshMethod.java:258)
at bsh.BshMethod.invoke(BshMethod.java:186)
at bsh.This.invokeMethod(This.java:255)
at bsh.This.invokeMethod(This.java:174)
at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.invoke(ScriptInstance.java:385)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScriptImpl(GlobalScriptMachine.java:139)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:69)
at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:39)
at bitel.billing.server.script.global.action.ActionExecuteScript.doAction(ActionExecuteScript.java:30)
at bitel.billing.server.Executer.doModule(Unknown Source)
at bitel.billing.server.Executer$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at bitel.billing.server.Executer.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)


И даже после того, как я добавляю класс:

import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractLimitManager;

ошибка не пропадает. А как правильно добавить предыдущие классы:

import ru.bitel.common.dao.AbstractDao<B>
import ru.bitel.common.dao.AbstractIdDao<ContractGroup>
import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractGroupDao

я не разобрался. Я так понимаю, что-то нужно вписывать вместо знаков <B> и <ContractGroup>.
Если с последним более-менее всё понятно, то что подставлять вместо первого?

Автор:  skn [ 15 дек 2015, 12:56 ]
Заголовок сообщения:  Re: Изменение лимита

какая версия биллинга?

Автор:  Alick [ 15 дек 2015, 12:57 ]
Заголовок сообщения:  Re: Изменение лимита

5.2

Автор:  skn [ 15 дек 2015, 19:05 ]
Заголовок сообщения:  Re: Изменение лимита

попробуйте добавить
Код:
import bitel.billing.server.contract.bean.LimitManager;

Автор:  Alick [ 15 дек 2015, 19:21 ]
Заголовок сообщения:  Re: Изменение лимита

Да, сейчас на LimitManager перестала ругаться. Но стала выскакивать ошибка:

EXCEPTIONS:
Typed variable declaration : Class: ServerContext not found in namespace
Typed variable declaration : Class: ServerContext not found in namespace : at Line: 23 : in file: 111 : ServerContext

Я добавил библиотеки:

import ru.bitel.common.worker.ThreadContext;
import ru.bitel.bgbilling.kernel.base.server.DefaultContext;
import ru.bitel.bgbilling.kernel.container.managed.ContainerContext;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;

Теперь выскакивает ошибка:

EXCEPTIONS:
Class or variable not found: User.USER_SERVER
Class or variable not found: User.USER_SERVER : at Line: 39 : in file: 111 : User .USER_SERVER

at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
at bsh.BSHAmbiguousName.toObject(BSHAmbiguousName.java:64)
at bsh.BSHAmbiguousName.toObject(BSHAmbiguousName.java:51)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:93)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHArguments.getArguments(BSHArguments.java:65)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:69)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHWhileStatement.eval(BSHWhileStatement.java:72)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BshMethod.invokeImpl(BshMethod.java:362)
at bsh.BshMethod.invoke(BshMethod.java:258)
at bsh.BshMethod.invoke(BshMethod.java:186)
at bsh.This.invokeMethod(This.java:255)
at bsh.This.invokeMethod(This.java:174)
at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.invoke(ScriptInstance.java:385)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScriptImpl(GlobalScriptMachine.java:139)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:69)
at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:39)
at bitel.billing.server.script.global.action.ActionExecuteScript.doAction(ActionExecuteScript.java:30)
at bitel.billing.server.Executer.doModule(Unknown Source)
at bitel.billing.server.Executer$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at bitel.billing.server.Executer.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Получается, что User.USER_SERVER не описан.

Вот полный скрипт:

import bitel.billing.server.util.*;
import bitel.billing.server.ipn.bean.*;

import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.event.QueueEvent;
import ru.bitel.bgbilling.kernel.event.events.LimitChangedEvent;

import bitel.billing.server.contract.bean.LimitManager;

import ru.bitel.common.worker.ThreadContext;
import ru.bitel.bgbilling.kernel.base.server.DefaultContext;
import ru.bitel.bgbilling.kernel.container.managed.ContainerContext;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


import java.math.BigDecimal;


public void main( setup, con, conSlave )
{

LimitManager lm = new LimitManager(con);
ServerContext context = ServerContext.get();
BigDecimal limit = new BigDecimal(-30);

st = con.prepareStatement("SELECT contract.id, contract.comment FROM contract WHERE contract.id = 2255 ");
rs = st.executeQuery();
gm = new IPNContractStatusManager(con, 1, setup.getSetup().getModuleSetup(1));


while(rs.next())
{

int cid = rs.getInt(1);
lm.updateContractLimit(User.USER_SERVER, limit, cid, "Блаблабла", "");
context.publishAfterCommit(new SystemLimitChangedEvent(cid, limit));
context.publishAfterCommit(new LimitChangedEvent(cid, limit));
context.commit();
print("cid: "+cid+" - "+" лимит " + dm.getNewLimit() );


}


}

Автор:  skn [ 15 дек 2015, 19:24 ]
Заголовок сообщения:  Re: Изменение лимита

см. http://bgbilling.ru/v5.2/javadoc/index.html
Код:
import ru.bitel.bgbilling.kernel.module.common.bean.User;

Автор:  Alick [ 16 дек 2015, 12:29 ]
Заголовок сообщения:  Re: Изменение лимита

Спасибо. Всё работает.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/