Установка unload status счета через HTTP-запрос
Материал из BiTel WiKi
DimOn (Обсуждение | вклад) (Отмена правки 2500 участника Admin (обсуждение)) |
|||
(11 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | + | <p>В таблице счетов bill_data_{mid} есть поле unload_status - признак выгруженности счета во внешнюю систему. Но стандартного API для работы с ним нет, приходится изменять его напрямую в базе. Но не всегда разумно давать прямой доступ к базе внешней системе.</p> | |
- | + | <p>Решением является создание своего Action (см например [[Свой_action_в_личном_кабинете]]): | |
+ | |||
+ | |||
+ | == Для версии 5.1 == | ||
В рабочей директории, например ~/playground делаем файлик ./bitel/billing/server/bill/action/ActionSetUnloadStatus.java : | В рабочей директории, например ~/playground делаем файлик ./bitel/billing/server/bill/action/ActionSetUnloadStatus.java : | ||
- | < | + | |
+ | <source lang=java> | ||
+ | package bitel.billing.server.bill.action; | ||
+ | |||
+ | import java.sql.SQLException; | ||
+ | import java.sql.PreparedStatement; | ||
+ | import bitel.billing.common.BGException; | ||
+ | import bitel.billing.server.bill.action.base.ActionBase; | ||
+ | |||
+ | public class ActionSetUnloadStatus extends ActionBase { | ||
+ | |||
+ | public void doAction() throws SQLException, BGException { | ||
+ | int id = getIntParameter("id", -1); | ||
+ | int status = getIntParameter("status", 0); | ||
+ | if ((this.mid <= 0) || (id <= 0)) | ||
+ | { | ||
+ | this.setWebParamsError(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | String query = "UPDATE bill_data_" + this.mid + " SET unload_status = ? WHERE id = ?"; | ||
+ | |||
+ | PreparedStatement localPreparedStatement = this.con.prepareStatement(query); | ||
+ | localPreparedStatement.setInt(1, status); | ||
+ | localPreparedStatement.setInt(2, id); | ||
+ | localPreparedStatement.executeUpdate(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </source> | ||
+ | |||
+ | Компилируем: | ||
+ | javac -cp ./:/usr/local/BGBillingServer/lib/* bitel/billing/server/bill/action/ActionSetUnloadStatus.java | ||
+ | |||
+ | Запаковываем: | ||
+ | jar cf bill-my.jar ./ | ||
+ | |||
+ | Закидываем в lib биллинга: | ||
+ | cp bill-my.jar /usr/local/BGBillingServer/lib/ | ||
+ | |||
+ | Перезапускаем BGBillingServer и можем обращаться по URL вида: | ||
+ | <source lang="bash">http://<ip>:8080/bgbilling/executer?user=<username>&pswd=<pswd>module=bill&action=SetUnloadStatus&mid=<mid>&id=<billID>&status=<status></source> | ||
+ | </p> | ||
+ | |||
+ | == Для версий 4.6 и 5.0 == | ||
+ | |||
+ | <source lang=java> | ||
+ | package bitel.billing.server.bill.action; | ||
import java.sql.*; | import java.sql.*; | ||
Строка 28: | Строка 79: | ||
ps.executeUpdate(); | ps.executeUpdate(); | ||
} | } | ||
- | }</ | + | }</source> |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | Для параноиков можно задать наш action в /usr/local/BGBillingServer/actions/bill.xml и ограничить права для пользователей. | + | <p>Для параноиков можно задать наш action в /usr/local/BGBillingServer/actions/bill.xml и ограничить права для пользователей. |
Только при задании id action-а в xml нужно позаботиться об уникальности и указать его равным, скажем 1001. | Только при задании id action-а в xml нужно позаботиться об уникальности и указать его равным, скажем 1001. | ||
+ | </p> |
Текущая версия на 15:13, 8 июня 2015
В таблице счетов bill_data_{mid} есть поле unload_status - признак выгруженности счета во внешнюю систему. Но стандартного API для работы с ним нет, приходится изменять его напрямую в базе. Но не всегда разумно давать прямой доступ к базе внешней системе.
Решением является создание своего Action (см например Свой_action_в_личном_кабинете):
Для версии 5.1
В рабочей директории, например ~/playground делаем файлик ./bitel/billing/server/bill/action/ActionSetUnloadStatus.java :
package bitel.billing.server.bill.action; import java.sql.SQLException; import java.sql.PreparedStatement; import bitel.billing.common.BGException; import bitel.billing.server.bill.action.base.ActionBase; public class ActionSetUnloadStatus extends ActionBase { public void doAction() throws SQLException, BGException { int id = getIntParameter("id", -1); int status = getIntParameter("status", 0); if ((this.mid <= 0) || (id <= 0)) { this.setWebParamsError(); return; } String query = "UPDATE bill_data_" + this.mid + " SET unload_status = ? WHERE id = ?"; PreparedStatement localPreparedStatement = this.con.prepareStatement(query); localPreparedStatement.setInt(1, status); localPreparedStatement.setInt(2, id); localPreparedStatement.executeUpdate(); } }
Компилируем: javac -cp ./:/usr/local/BGBillingServer/lib/* bitel/billing/server/bill/action/ActionSetUnloadStatus.java
Запаковываем: jar cf bill-my.jar ./
Закидываем в lib биллинга: cp bill-my.jar /usr/local/BGBillingServer/lib/
Перезапускаем BGBillingServer и можем обращаться по URL вида:
http://<ip>:8080/bgbilling/executer?user=<username>&pswd=<pswd>module=bill&action=SetUnloadStatus&mid=<mid>&id=<billID>&status=<status>
Для версий 4.6 и 5.0
package bitel.billing.server.bill.action; import java.sql.*; public class ActionSetUnloadStatus extends ActionBase { public void doAction() throws SQLException { int id = getIntParameter("id", -1); int status = getIntParameter("status", 0); if ((this.mid <= 0) || (id <= 0)) { setParamsError(); return; } query = "UPDATE bill_data_"+this.mid+" SET unload_status = ? WHERE id = ?"; PreparedStatement ps = this.con.prepareStatement(query); ps.setInt(1, status); ps.setInt(2, id); ps.executeUpdate(); } }
Для параноиков можно задать наш action в /usr/local/BGBillingServer/actions/bill.xml и ограничить права для пользователей. Только при задании id action-а в xml нужно позаботиться об уникальности и указать его равным, скажем 1001.