📄 mmsqueue.java
字号:
*/
private int isVisible;
public void setIsVisible(int isVisible) {
this.isVisible = isVisible;
}
public int getIsVisible() {
return isVisible;
}
/**
* varchar2(10) default 'auto' --彩信的类别,设置MM的类别(例如,广告、
* 信息服务和计费),可选,具体有:Auto、Personal、Advertisement、Informational
*/
private String messageClass;
public void setMessageClass(String messageClass) {
this.messageClass = messageClass;
}
public String getMessageClass() {
return this.messageClass;
}
/**
*
* @param corpid
* 企业代码
* @param spnumber
* 接入号码
* @param servicecode
* 业务代码
*/
public MMSQueue(String corpid, String spnumber, String servicecode) {
this.corpID = corpid;
this.spNumber = spnumber;
this.serviceCode = servicecode;
this.sendType = 1;
this.reportFlag = 1;
this.readReply = 1;
this.priority = 2;// 较高的优先级
this.messageClass = "auto";
}
/**
* 此方法默认为接受状态报告,接收读后回复报告,发送方式为to,计费号码为接受方号码。其他mms接口的可选字段都为默认值。同时,插入mmsendlog表
*
* @param con
* @param queueid
* @param vasfrom
* http方式的话,填sp下发时候的计费号码,业务代码为免费的话,也可以是企业代码.soap方式的话为发送方地址,即senderaddress字段,填写SP的服务代码(接入号),即VASID,或者填写让用户回复SP的长号码,长号码构成:SP的服务代码+业务代码+操作码
* @param vasto
* 接收方号码
* @param mmdir
* 彩信文件的存放目录,每个彩信存放一个目录,系统根据此目录,找到此目录下的所有文件,组合成彩信的内容。如果contentType为1的话,则此dir下必须有smil文件
* @param subject
* 主题
* @throws SQLException
*/
public void insert(Connection con, long queueid, String vasfrom, String vasto, String mmdir, String subject)
throws SQLException {
PreparedStatement stmt = null;
PreparedStatement logstmt = null;
String sql = "insert into mmsqueue(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?)";
String logsql = "insert into mmsendlog(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?)";
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(sql);
logstmt = con.prepareStatement(logsql);
stmt.setLong(1, queueid);
stmt.setString(2, corpID);
stmt.setString(3, spNumber);
stmt.setString(4, serviceCode);
stmt.setString(5, vasfrom);
stmt.setString(6, vasto);
stmt.setInt(7, 1); // 表示由接受方扣费
stmt.setString(8, subject);
stmt.setString(9, mmdir);
stmt.executeUpdate();
stmt.close();
logstmt.setLong(1, queueid);
logstmt.setString(2, corpID);
logstmt.setString(3, spNumber);
logstmt.setString(4, serviceCode);
logstmt.setString(5, vasfrom);
logstmt.setString(6, vasto);
logstmt.setInt(7, 1); // 表示由接受方扣费
logstmt.setString(8, subject);
logstmt.setString(9, mmdir);
logstmt.executeUpdate();
logstmt.close();
con.commit();
}
catch (SQLException e) {
con.rollback();
System.out.println(e);
}
finally {
con.setAutoCommit(true);
if (stmt != null)
stmt.close();
if (logstmt != null)
logstmt.close();
}
}
/**
* 此方法默认为接受状态报告,接收读后回复报告,发送方式为to,计费号码为第三方号码。其他mms接口的可选字段都为默认值
*
* @param con
* @param queueid
* @param vasfrom
* http方式的话,填sp下发时候的计费号码,业务代码为免费的话,也可以是企业代码.soap方式的话为发送方地址,即senderaddress字段,填写SP的服务代码(接入号),即VASID,或者填写让用户回复SP的长号码,长号码构成:SP的服务代码+业务代码+操作码
* @param vasto
* 接收方号码
* @param mmdir
* 彩信文件的存放目录,每个彩信存放一个目录,系统根据此目录,找到此目录下的所有文件,组合成彩信的内容。如果contentType为1的话,则此dir下必须有smil文件
* @param subject
* 主题
* @throws SQLException
*/
public void insert(Connection con, long queueid, String vasfrom, String vasto, String feemobile, String mmdir,
String subject) throws SQLException {
PreparedStatement stmt = null;
PreparedStatement logstmt = null;
String sql = "insert into mmsqueue(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobile,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?,?)";
String logsql = "insert into mmsendlog(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobile,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?,?)";
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(sql);
logstmt = con.prepareStatement(logsql);
stmt.setLong(1, queueid);
stmt.setString(2, corpID);
stmt.setString(3, spNumber);
stmt.setString(4, serviceCode);
stmt.setString(5, vasfrom);
stmt.setString(6, vasto);
stmt.setString(7, feemobile);
stmt.setInt(8, 4); // 表示由feemobile来扣费
stmt.setString(9, subject);
stmt.setString(10, mmdir);
stmt.executeUpdate();
stmt.close();
logstmt.setLong(1, queueid);
logstmt.setString(2, corpID);
logstmt.setString(3, spNumber);
logstmt.setString(4, serviceCode);
logstmt.setString(5, vasfrom);
logstmt.setString(6, vasto);
logstmt.setString(7, feemobile);
logstmt.setInt(8, 4); // 表示由feemobile来扣费
logstmt.setString(9, subject);
logstmt.setString(10, mmdir);
logstmt.executeUpdate();
logstmt.close();
con.commit();
}
catch (SQLException e) {
con.rollback();
System.out.println(e);
}
finally {
con.setAutoCommit(true);
if (stmt != null)
stmt.close();
if (logstmt != null)
logstmt.close();
}
}
/**
*
* @param con
* @param MMSQueues
* @param commitCount
* @throws SQLException
*/
public static void insert(Connection con, List MMSQueues, int commitCount) throws SQLException {
MMSQueue[] queues = (MMSQueue[]) MMSQueues.toArray();
insert(con, queues, commitCount);
}
/**
* 批量新增,建议批量新增的个数一次性最多为50个.太多了反而可能导致性能的下降 在执行此的时候,应将con的自动commit设为false;
*
* @param con
* @param queues
* @param commit
* 满足多少条插入一次,建议在40--50之间
* @throws SQLException
*/
public static void insert(Connection con, MMSQueue[] queues, int commitCount) throws SQLException {
PreparedStatement stmt = null;
PreparedStatement logstmt = null;
String sql = "insert into mmsqueue "
+ "(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,sendtype,reportFlag,readreply,feemobile,feemobiletype,subject,mmdir,contenttype,priority,feevalue,ReplyChargingSize,ReplyCharging,expiretime,deliverytime,EarliestDeliveryTime,replydeadline,AllowAdaptations,isVisible,messageclass) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String logsql = "insert into mmsendlog "
+ "(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,sendtype,reportFlag,readreply,feemobile,feemobiletype,subject,mmdir,contenttype,priority,feevalue,ReplyChargingSize,ReplyCharging,expiretime,deliverytime,EarliestDeliveryTime,replydeadline,AllowAdaptations,isVisible,messageclass) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(sql);
logstmt = con.prepareStatement(logsql);
for (int i = 1; i <= queues.length; i++) {
MMSQueue queue = queues[i - 1];
stmt.setLong(1, queue.getQueueID());
stmt.setString(2, queue.getCorpID());
stmt.setString(3, queue.getSpNumber());
stmt.setString(4, queue.getServiceCode());
stmt.setString(5, queue.getVasFrom());
stmt.setString(6, queue.getVasTO());
stmt.setInt(7, queue.getSendType());
stmt.setInt(8, queue.getReportFlag());
stmt.setInt(9, queue.getReadReply());
stmt.setString(10, queue.getFeeMobile());
if (queue.getFeeMobile() != null)
stmt.setInt(11, 4);
else
stmt.setInt(11, queue.getFeeMobileType());
stmt.setString(12, queue.getSubject());
stmt.setString(13, queue.getMMDir());
stmt.setInt(14, queue.getContentType());
stmt.setInt(15, queue.getPriority());
stmt.setString(16, queue.getFeeValue());
stmt.setLong(17, queue.getReplyChargingSize());
stmt.setInt(18, queue.getReplyCharging());
stmt.setTimestamp(19, queue.getExpireTime());
stmt.setTimestamp(20, queue.getDeliveryTime());
stmt.setTimestamp(21, queue.getEarliestDeliveryTime());
stmt.setTimestamp(22, queue.getReplyDeadLine());
stmt.setInt(23, queue.getAllowAdaptations());
stmt.setInt(24, queue.getIsVisible());
stmt.setString(25, queue.getMessageClass());
stmt.addBatch();
logstmt.setLong(1, queue.getQueueID());
logstmt.setString(2, queue.getCorpID());
logstmt.setString(3, queue.getSpNumber());
logstmt.setString(4, queue.getServiceCode());
logstmt.setString(5, queue.getVasFrom());
logstmt.setString(6, queue.getVasTO());
logstmt.setInt(7, queue.getSendType());
logstmt.setInt(8, queue.getReportFlag());
logstmt.setInt(9, queue.getReadReply());
logstmt.setString(10, queue.getFeeMobile());
// 如果收费号码不为空的话,则计费号码类型设置为4
if (queue.getFeeMobile() != null)
logstmt.setInt(11, 4);
else
// 否则的话,设置为
logstmt.setInt(11, queue.getFeeMobileType());
logstmt.setString(12, queue.getSubject());
logstmt.setString(13, queue.getMMDir());
logstmt.setInt(14, queue.getContentType());
logstmt.setInt(15, queue.getPriority());
logstmt.setString(16, queue.getFeeValue());
logstmt.setLong(17, queue.getReplyChargingSize());
logstmt.setInt(18, queue.getReplyCharging());
logstmt.setTimestamp(19, queue.getExpireTime());
logstmt.setTimestamp(20, queue.getDeliveryTime());
logstmt.setTimestamp(21, queue.getEarliestDeliveryTime());
logstmt.setTimestamp(22, queue.getReplyDeadLine());
logstmt.setInt(23, queue.getAllowAdaptations());
logstmt.setInt(24, queue.getIsVisible());
logstmt.setString(25, queue.getMessageClass());
logstmt.addBatch();
if (i % commitCount == 0) {
// System.out.println(i);
stmt.executeBatch();
stmt.clearBatch();
logstmt.executeBatch();
logstmt.clearBatch();
}
}
stmt.executeBatch();
logstmt.executeBatch();
con.commit();
}
catch (SQLException e) {
con.rollback();
System.out.println(e.toString());
throw e;
}
finally {
if (stmt != null)
stmt.close();
if (logstmt != null)
logstmt.close();
}
}
public static void main(String args[]) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.3:1521:ora9", "sxit", "sxit");
if (args.length < 1) {
System.out.println("请输入彩信目录:");
return;
}
System.out.println("彩信目录:"+args[0]);
// MMSQueue[] queues = new MMSQueue[300];
// for (int i = 0; i < queues.length; i++) {
MMSQueue queue = new MMSQueue("823009", "07155", "07155");
// queue.setQueueID(1000000 + i);
// queue.setFeeMobile("13608300000");
// queue.setVasFrom("07155");
// queue.setVasTO("13608300000");
// queue.setMMDir("/20060210");
// queues[i] = queue;
//
// }
// long now = System.currentTimeMillis();
// MMSQueue.insert(conn, queues, 50);
// System.out.println(System.currentTimeMillis() - now);
queue.insert(conn, System.currentTimeMillis() / 1000, "0715507155", "13883190608", "13608300000", args[0],
"");
System.out.println("-------插入成功");
// queue.insert(conn, 7322, "0715507155", "13883190608", "13608300000",
// "/20060128", "从数据库取彩信发送");
//
// queue.insert(conn,2,"0715507155","13983241005","/usr/local","dddddddddddddddd");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -