Установка unload status счета через HTTP-запрос

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
(Отмена правки 2500 участника Admin (обсуждение))
 
(11 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
В таблице счетов bill_data_{mid} есть поле unload_status - признак выгруженности счета во внешнюю систему. Но стандартного API для работы с ним нет, приходится изменять его напрямую в базе. Но не всегда разумно давать прямой доступ к базе внешней системе.
+
<p>В таблице счетов bill_data_{mid} есть поле unload_status - признак выгруженности счета во внешнюю систему. Но стандартного API для работы с ним нет, приходится изменять его напрямую в базе. Но не всегда разумно давать прямой доступ к базе внешней системе.</p>
-
Решением является создание своего Action (см например [[Свой_action_в_личном_кабинете]]):
+
<p>Решением является создание своего Action (см например [[Свой_action_в_личном_кабинете]]):
 +
 
 +
 
 +
== Для версии 5.1 ==
В рабочей директории, например ~/playground делаем файлик ./bitel/billing/server/bill/action/ActionSetUnloadStatus.java :
В рабочей директории, например ~/playground делаем файлик ./bitel/billing/server/bill/action/ActionSetUnloadStatus.java :
-
<code lang=java>package bitel.billing.server.bill.action;
+
 
 +
<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();
   }
   }
-
}</code>
+
}</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 вида:
+
-
<code>http://192.168.1.201:8080/bgbilling/executer?user=<username>&pswd=<pswd>module=bill&action=SetUnloadStatus&mid=<mid>&id=<billID>&status=<status></code>
+
-
Для параноиков можно задать наш 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.

Личные инструменты