短信平台开发


package com.smp.webservice;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.smp.bean.MsgDeliver;
import com.smp.bean.MsgSubmit;
import com.smp.sev.service.JobService;
import com.smp.sev.service.MsgService;
import com.smp.sev.service.ParameterService;
import com.smp.util.Constants;

public class SmsDeliver extends HttpServlet {

private static Logger LOG = Logger.getLogger(SmsDeliver.class);
private MsgService ms;
private ParameterService parameters;

private JobService jobService ;

private static final long serialVersionUID = 2454345053369427942L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//根据短号找msgid,以后需要扩展为根据规则找msgid

//首先验证系统开关
if("关闭".equals(parameters.getPrarameterByName("shangxing"))){
response.getWriter().write("0");
return;
}
try {
StringBuffer data =new StringBuffer();
String state = "0";
try {
InputStream in = request.getInputStream();
BufferedInputStream buf = new BufferedInputStream(in);
byte[] buffer = new byte[1024];

int a ;
while((a = buf.read(buffer))!= -1){
data.append(new String(buffer,0,a,"gbk"));
}
if(LOG.isDebugEnabled()) {
LOG.debug(data.toString());
}
} catch (Exception e) {
LOG.debug("接收上行短信失败:"+e.getMessage());
state = "9";
}
response.getWriter().write(state);
Document doc = DocumentHelper.parseText(data.toString());
Element root = doc.getRootElement();
List<Element> deliverElements = (List<Element>)root.elements("deliver");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for(Element deliver:deliverElements){

String corp_id = deliver.elementText("corp_id");
String mobile = deliver.elementText("mobile");
String sno = deliver.elementText("ext");
String time = deliver.elementText("time");
String msg = deliver.elementText("content");
if(LOG.isDebugEnabled()) {
LOG.debug(corp_id+":"+mobile+":"+sno+":"+time+":"+msg);
}
int msgid = -1;

try {
if(sno==null) sno = "";
else {
sno = sno.trim();
msgid = ms.getMsgIdByShortNo(sno);
}
MsgDeliver msgDeliver = new MsgDeliver();
MsgSubmit msgSubmit = new MsgSubmit();
msgSubmit.setMsId(msgid);
msgDeliver.setMsgSubmit(msgSubmit);
msgDeliver.setMdPhone(mobile);
msgDeliver.setMdShortno(sno);
msgDeliver.setMdContent(msg);
msgDeliver.setMdRevicetime(new Timestamp(sdf.parse(time).getTime()));
if( !sno.equals(Constants.SMSNO_JOBDX) ) {
ms.addDeliver(msgDeliver); //如果不是就业通知则进行保存
//如果有回复,则状态改为成功
ms.updateState(msgid, mobile, "发送成功");
}
if( sno.equals(Constants.SMSNO_JOBDX) ) {//如果是就业通知则处理就业状态
jobService.updateJobState(mobile,msgDeliver) ;
}

}catch (Exception e) {
LOG.error("保存上行短信失败:"+e.getMessage());
}
}

} catch (DocumentException e1) {
e1.printStackTrace();
}
}

public void init() throws ServletException {
super.init();
ms=(MsgService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext())
.getBean("msgService");
parameters=(ParameterService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext())
.getBean("parameterService");
jobService = (JobService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext())
.getBean("jobService") ;
}
}



package com.smp.webservice;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.Timestamp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.smp.bean.MsgDeliver;
import com.smp.bean.MsgSubmit;
import com.smp.sev.service.JobService;
import com.smp.sev.service.MsgService;
import com.smp.sev.sms.MsgSender;
import com.smp.util.Constants;
import com.smp.util.Tools;

public class SmsXb extends HttpServlet {
private static final long serialVersionUID = 2065706035313209076L;
private static Logger LOG = Logger.getLogger(SmsXb.class);
private MsgService ms;
private JobService jobService ;


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// 根据短号找msgid,以后需要扩展为根据规则找msgid
String m = request.getParameter("m");
String sno = request.getParameter("sno");
String phone = request.getParameter("phone");
String msg = request.getParameter("msg");

String msgid = request.getParameter("msgid");
//发送状态,0:到达网关失败,1到达网关成功,2到达用户手机失败,3到达用户手机成功。
String state = request.getParameter("state");

if(LOG.isDebugEnabled()) {
LOG.debug(sno+"--"+phone+"--"+msg+"--"+msgid+"--"+state);
}
try {
if("res".equals(m)) {
upState(ms, msgid, phone, state);
}else if("deliver".equals(m)) {
addDeliver(ms, sno, phone, msg);
}
} catch (Exception e) {
LOG.error(e.getMessage());
}
}

public void upState(MsgService service, String msgid, String phone, String state) {
if(Tools.isEmpty(msgid)||Tools.isEmpty(phone)||Tools.isEmpty(state)) return;
msgid = msgid.trim();
phone = phone.trim();
state = state.trim();
//0:到达网关失败,1到达网关成功,2到达用户手机失败,3到达用户手机成功。
if("0".equals(state)) {
state = "发送失败";
}else if("3".equals(state)) {
state = "发送成功";
}else if("2".equals(state)) {
state = "发送失败";
}else if("1".equals(state)) {
state = "发送成功";
}else state = "未知状态";
try {
int mid = Integer.parseInt(msgid);
service.updateState(mid, phone, state);
} catch (NumberFormatException e) {
LOG.error("短信回应中短信id非整数");
}catch (Exception e) {
LOG.error("更新短信发送状态失败:"+e.getMessage());
}
}

public void addDeliver(MsgService service, String sno, String phone, String msg) throws UnsupportedEncodingException {

if (Tools.isEmpty(phone))
return;
phone = phone.trim();
int msgid = -1;
if (msg == null)
msg = "";
else {
msg = msg.trim();
msg = new String(msg.getBytes("ISO8859-1"), "GBK");
}

try {
if (sno == null)
sno = "";
else {
sno = sno.trim();
if(!sno.equals(MsgSender.getStartSno()))msgid = service.getMsgIdByShortNo(sno);
}

MsgDeliver deliver = new MsgDeliver();
if(msgid!=-1) {

MsgSubmit sub = new MsgSubmit();
sub.setMsId(msgid);
deliver.setMsgSubmit(sub);
}

deliver.setMdPhone(phone);
deliver.setMdShortno(sno);
deliver.setMdContent(msg);
deliver.setMdRevicetime(new Timestamp(System.currentTimeMillis()));
if( !sno.equals(Constants.SMSNO_JOBDX) ) {
ms.addDeliver(deliver); //如果不是就业通知则进行保存
//如果有回复,则状态改为成功
ms.updateState(msgid, phone, "发送成功");
}
if( sno.equals(Constants.SMSNO_JOBDX) ) {//如果是就业通知则处理就业状态
jobService.updateJobState(phone,deliver) ;
}
} catch (Exception e) {
LOG.error("保存上行短信失败:" + e.getMessage());
e.printStackTrace();
}
}

public void init() throws ServletException {
super.init();
ms = (MsgService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext()).getBean(
"msgService");
jobService = (JobService) WebApplicationContextUtils
.getRequiredWebApplicationContext(getServletContext())
.getBean("jobService") ;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
短信开发接口,企业短信开发平台短信数据库接口简介 为了简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性,我们开发了本套“企业短信数据库二次开发平台”。 功能1:基于本短信数据库二次开发平台,可以快速地使您的应用系统实现短信功能,多种接口方式供二次开发时选择,系统具备良好的可扩展性。 功能2:基于本短信数据库二次开发平台,可使同一网络(局域网或广域网)内众多客户端,共享一个短信数据库接口进行短信收发,短信开发接口具备对客户端的管理功能。 企事业单位通过短信服务器方式实现短信功能,既实现了资源的共享和有效使用,便于企业对进出信息的管理、监控和统计,同时为以后短信功能的扩展提供了便利。 短信数据库接口二次开发平台包括了下列可使用二次开发方法: 1、 修改短信服务器软件界面信息,OEM成自己的产品; 2、 应用系统通过命令行方式来收发短信; 3、 通过设置外部数据库,使应用系统实现短信收发功能; 4、 通过应用系统操作短信服务器数据库的方式,实现短信收发功能; 5、 通过socket客户端方式,实现应用系统的短信收发功能; 6、 使用短信客户端OCX控件,实现应用系统的短信收发功能; 7、 在网页上利用HTTP协议来发送短信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值