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协议,从而更加高效地发送短信。此外,该开发包还提供了完整的文档和示例代码,以帮助您更好地理解其用法和实现。因此,您可以放心地使用这个开发包来提高您的短信发送效率,从而更好地满足您的业务需求。
资源推荐
资源详情
资源评论





























格式:exe 资源大小:937.3KB

收起资源包目录





































































































共 108 条
- 1
- 2
资源评论


且行好事莫问前程
- 粉丝: 2w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 微信小程序的dva集成.zip
- 知名企业钢筋工程施工方案内容全面.doc
- (反编译微信小程序)一键获取微信小程序源码(傻瓜式操作), 使用了C#加nodejs制作.zip
- 对外承包工程行业升级的需要.doc
- 微信小程序 cnode社区版.zip
- 日语的多重授受动词.doc
- 北京某中学新建工程项目建议书.doc
- 营养和皮肤健康第二课.ppt
- 【福建】住宅工程质量通病控制技术(2007年).doc
- 第七章-施工质量控制及管理措施.doc
- 大学建筑实验室毕业设计计算书.doc
- 语言活动:《做梦》-中班.doc
- 微信小程序-滴滴作业.zip
- 招标投标委托代理合同.doc
- 05中建三局项目成本管理实施细则.doc
- 一个生成证件照的小程序,微信云原生开发小程序。 只fork不star是很没品的。.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
