package com.core.sgip.db;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import com.core.sgip.bean.MOItem;
import com.core.sgip.bean.RPTBean;
import com.core.sgip.body.command.*;
import com.core.sgip.constant.ClientConstant;
import com.core.sgip.head.SGIPMsgHead;
import com.core.sgip.util.SGIPUtils;
import com.mysql.jdbc.CallableStatement;
public class DB {
private Logger log = Logger.getLogger(getClass());
public static final int IMAPI_SUCC = 0;
public static final int IMAPI_CONN_ERR = -1;
public static final int IMAPI_CONN_CLOSE_ERR = -2;
public static final int IMAPI_INS_ERR = -3;
public static final int IMAPI_DEL_ERR = -4;
public static final int IMAPI_QUERY_ERR = -5;
public static final int IMAPI_DATA_ERR = -6;
public static final int IMAPI_API_ERR = -7;
public static final int IMAPI_DATA_TOOLONG = -8;
public static final int IMAPI_INIT_ERR = -9;
public static final int IMAPI_IFSTATUS_INVALID = -10;
public static final int IMAPI_GATEWAY_CONN_ERR = -11;
private String dbUser = null;
private String dbPwd = null;
// private String apiCode_ = null;
private String dbUrl = null;
private Connection conn = null;
public int init(String dbIP, String dbUser, String dbPwd) {
release();
this.dbUser = dbUser;
this.dbPwd = dbPwd;
// this.apiCode_ = apiCode;
this.dbUrl = ("jdbc:mysql://" + dbIP + "/im");
return testConnect();
}
public int init(String dbIP, String dbUser, String dbPwd,
String databaseName) {
release();
this.dbUser = dbUser;
this.dbPwd = dbPwd;
// this.apiCode_ = apiCode;
this.dbUrl = ("jdbc:mysql://" + dbIP + "/" + databaseName);
return testConnect();
}
// ----------------------------------------
// 获取发送列表
public MTReq[] getMT(String busi_code) {
if (this.dbUrl == null) {
return null;
}
if (this.conn == null) {
int state = initConnect();
if (state != 0) {
return null;
}
}
Statement st = null;
ResultSet rs = null;
String getMtSql = "select * from api_mt_" + busi_code + " limit 50";
ArrayList<MTReq> mtlist = new ArrayList<MTReq>();
try {
st = this.conn.createStatement();
rs = st.executeQuery(getMtSql);
while (rs.next()) {
MTReq mItemtmp = new MTReq();
mItemtmp.setAuto_sn(Integer.toString(rs.getInt("AUTO_SN")));
mItemtmp.setPhone(rs.getString("MOBILES"));
mItemtmp.setMessageContent(rs.getString("CONTENT"));
mItemtmp.setServiceType(busi_code);
// TODO 加入其他信息
mtlist.add(mItemtmp);
}
rs.close();
} catch (Exception e) {
releaseConn();
MTReq[] arrayOfMOItem1 = null;
return arrayOfMOItem1;
} finally {
closeStatment(st);
}
MTReq[] mtItem = new MTReq[0];
return (MTReq[]) mtlist.toArray(mtItem);
}
public int testAndCreateTblBill() {
// TODO create
// String tblBill=currBilltblName();
// if tblIsNotExists(tblBill)
// {
// createtbl(tblBill);
// }
return 0;
}
private String phones(List<String> phonelist) {
String tmp = "";
for (int i = 0; i < phonelist.size(); i++)
tmp = tmp + phonelist.get(i) + ",";
if (tmp.length() > 0)
tmp = tmp.substring(0, tmp.length() - 1);
return tmp;
}
// ----------------------------------------
// 判断bill表是否存在,如果不存在则生成新的bill表
// ----------------------------------------
// 插入发送记录表,插入失败返回值<0
public int insertToTblBill(SGIPMsgHead head, Submit submit) {
if (this.conn == null) {
int state = initConnect();
if (state != 0) {
return -2;
}
}
String tblBill = currBilltblName();
// 执行存储过程,判断并生成新的bill表
if (this.exeDBProc("sm_creatBillTbProc") < 0)
return -1;
StringBuilder sb = new StringBuilder();
sb.append("insert into ");
sb.append(tblBill);
sb
.append("(seq_id,mobile,busi_code,sms_content,sms_num,fun_type,sms_type,send_user_id,bill_time)");
sb.append("values(");
// seq_id
// sb.append(head.getSequenceNumberStr());sb.append(",");
sb.append("'" + head.getSequenceNumberStr() + "',");
sb.append("'" + phones(submit.getListUserNumber()) + "',");// mobile
sb.append("'" + submit.getServiceType() + "',");// busi_code
sb.append("'" + submit.getMessageContent() + "',");// messagecontent
// sms_num 本条短信拆分成几条短信
int len=0;
System.err.println("length="+submit.getMessageContent().length());
len = submit.getMessageContent().length();
System.out.println("len="+len);
int sms_num = (int) ( (len / 70) + ((len % 70) != 0 ? 1 : 0));
sb.append(sms_num);
sb.append(",");
// fun_type 2=对“计费用户号码”按条计信息费
sb.append(submit.getFeeType());
sb.append(",");
// sms_type 0 or 1
// send_user_id
// 这两个字段的值含义没有搞清楚,是根据现有的bill表数据总结而来。
int sms_type, send_user_id;
if (submit.getServiceType().equalsIgnoreCase("15")) {
sms_type = 0;
send_user_id = 0;
} else {
sms_type = 1;
send_user_id = 1;
}
sb.append(sms_type);
sb.append(",");
sb.append(send_user_id);
sb.append(",");
// bill_time 更换为数据库时间更合理,而不是当前机器时间
sb.append("'" + this.getCurDateTime() + "')");
Statement st = null;
try {
st = this.conn.createStatement();
int ret = st.executeUpdate(sb.toString());
if (ret < 1)
return -1;
} catch (Exception e) {
releaseConn();
} finally {
closeStatment(st);
}
return 0;
}
// ----------------------------------------
// 插入发送记录表,插入失败返回值<0
// TODO 待完成,上行业务代码没法区分
public int insertToTblRpt(SGIPMsgHead head, Report report) {
if (this.conn == null) {
int state = initConnect();
if (state != 0) {
return -2;
}
}
// 执行存储过程,判断并生成新的Rpt表
if (this.exeDBProc("sm_creatRptTbProc") < 0)
return -1;
String tabName = currRpttblName();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "insert into " + tabName
+ " (im_id,dest,result,rpt_time,src,busi_code,rpt_desc,"
+ "send_user_id,rptIndex) values(?,?,?,?,?,?,?,?,?)";
int size = ClientConstant.phoneList.size();
if (size >= 1) {
for (int i = 0; i < size; i++) {
String phoneNum = ClientConstant.phoneList.get(i);
phoneNum = phoneNum.substring(2);
// 查询当前记录的手机号是否已发送,已发送则rptIndex+1;
int rptIndex = 1;
String selSql = "SELECT * from " + tabName + " WHERE dest=?";
try {
ps = this.conn.prepareStatement(selSql);
ps.setString(1, phoneNum);
rs = ps.executeQuery();
while (rs.next()) {
rptIndex = rptIndex + 1;
}
rs.close();
ps = this.conn.prepareStatement(sql);
ps.setString(1, report.getSubmitSequenceNumberStr());
ps.setString(2, report.getUserNumber().trim());
ps.setString(3, report.getState() + "");
ps.setString(4, this.getCurDateTime());
ps.setString(5, ClientConstant.DEFAULT_SERVICE_TYPE);
ps.setString(6, ClientConstant.DEFAULT_SERVICE_TYPE);
ps.setString(7, "");
ps.setString(8, "1");
ps.setString(9, rptIndex + "");
int ret = ps.executeUpdate();
if (ret < 1)
return -1;
} catch (Exception e) {
releaseConn();
} finally {
// closeStatment(st);
closePreparedStatment(ps);
}
}
}
return 0;
}
// --------------------
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该联通SGIP协议开发包源码旨在提供对中国联通SGIP短信发送协议的完美对接,并通过Java源码实现Bing命令和Submit命令。这意味着您可以轻松地使用这个开发包来快速集成SGIP协议,从而更加高效地发送短信。此外,该开发包还提供了完整的文档和示例代码,以帮助您更好地理解其用法和实现。因此,您可以放心地使用这个开发包来提高您的短信发送效率,从而更好地满足您的业务需求。
资源推荐
资源详情
资源评论
收起资源包目录
联通SGIP协议开发包源码,实现对中国联通SGIP短信发送协议对接 (108个子文件)
sgip.log.2014-10-21 22KB
DB.class 22KB
SGIPClient.class 18KB
CopyOfDB.class 17KB
Submit.class 10KB
SGIPServer.class 8KB
ConnectSocketHandler.class 8KB
ClientConstant.class 5KB
SGIPUtils.class 5KB
SGIPMsgHead.class 4KB
InsertTask.class 4KB
Deliver.class 4KB
SendTask2.class 4KB
SendTask.class 4KB
SGIPCommandDefine.class 4KB
Report.class 3KB
SGIPMsg.class 3KB
SPSender.class 3KB
SGIPFactory.class 3KB
DefaultMessageHandler.class 3KB
SPMonitor.class 3KB
SPMtnitor.class 3KB
MTReq.class 3KB
RPTBean.class 3KB
SGIPServiceListener.class 2KB
Bind.class 2KB
TestDB.class 2KB
BindResp.class 2KB
TDTLevel.class 2KB
SubmitResp.class 2KB
RPTItem.class 1KB
SGIPConstant.class 1KB
MOItem.class 1KB
ReportResp.class 1KB
DeliverResp.class 1KB
Main.class 856B
SGIPCommand.class 757B
Main$launchUnicomSPMonitor.class 697B
SGIPServiceListener$1.class 679B
UnBindResp.class 617B
SGIPSeq.class 587B
MockTriggeringEventEvaluator.class 581B
UnBind.class 492B
MessageHandler.class 441B
SGIPException.class 379B
SGIPNIOServer.class 306B
SGIPByteData.class 195B
.classpath 610B
mysql-connector-java-5.1.22-bin.jar 813KB
log4j-1.2.16.jar 470KB
commons-lang-2.5.jar 273KB
DB.java 23KB
SGIPClient.java 23KB
CopyOfDB.java 17KB
Submit.java 11KB
ConnectSocketHandler.java 7KB
SGIPServer.java 7KB
SGIPUtils.java 6KB
SGIPMsgHead.java 5KB
ClientConstant.java 5KB
InsertTask.java 5KB
SGIPCommandDefine.java 5KB
Deliver.java 5KB
Report.java 4KB
SendTask.java 4KB
SendTask2.java 3KB
SGIPFactory.java 3KB
SGIPMsg.java 3KB
SPSender.java 3KB
MTReq.java 3KB
Bind.java 3KB
SPMtnitor.java 2KB
SPMonitor.java 2KB
DefaultMessageHandler.java 2KB
BindResp.java 2KB
SGIPServiceListener.java 2KB
SGIPConstant.java 2KB
RPTBean.java 2KB
TDTLevel.java 2KB
SubmitResp.java 2KB
ReportResp.java 1KB
DeliverResp.java 1KB
MessageHandler.java 1KB
Main.java 1KB
RPTItem.java 1KB
SGIPCommand.java 1KB
UnBindResp.java 974B
TestDB.java 941B
SGIPSeq.java 933B
MOItem.java 909B
UnBind.java 891B
SGIPByteData.java 750B
SGIPException.java 699B
SGIPNIOServer.java 609B
MockTriggeringEventEvaluator.java 301B
index.jsp 834B
sgip.log 832KB
MANIFEST.MF 36B
.mymetadata 286B
com.genuitec.eclipse.j2eedt.core.prefs 1KB
共 108 条
- 1
- 2
资源评论
且行好事莫问前程
- 粉丝: 2w+
- 资源: 443
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功