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/ |