Skip to content

Commit

Permalink
修改SMGP,SMPP的状态报告返回
Browse files Browse the repository at this point in the history
  • Loading branch information
Lihuanghe committed May 13, 2021
1 parent 17d40ea commit c03a9fd
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
5 changes: 5 additions & 0 deletions src/main/java/com/zx/sms/config/ConfigFileUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.stereotype.Component;

import com.zx.sms.connect.manager.EndpointEntity;
import com.zx.sms.connect.manager.EndpointEntity.SupportLongMessage;
import com.zx.sms.connect.manager.cmpp.CMPPEndpointEntity;
import com.zx.sms.connect.manager.cmpp.CMPPServerChildEndpointEntity;
import com.zx.sms.connect.manager.cmpp.CMPPServerEndpointEntity;
Expand Down Expand Up @@ -118,6 +119,7 @@ private static void buildSgipEndpointEntity(HierarchicalConfiguration session, S
tmp.setLoginPassowrd(session.getString("passwd"));
tmp.setNodeId(session.getLong("nodeId", 259200L));
tmp.setMaxChannels(session.getShort("maxChannels"));
tmp.setSupportLongmsg(SupportLongMessage.NONE);
addBusinessHandlerSet(session,tmp);
}

Expand All @@ -129,6 +131,7 @@ private static void buildSMGPEndpointEntity(HierarchicalConfiguration session, S
tmp.setPassword(session.getString("passwd"));
tmp.setClientVersion(session.getByte("version", (byte) 0x30));
tmp.setMaxChannels(session.getShort("maxChannels"));
tmp.setSupportLongmsg(SupportLongMessage.NONE);
addBusinessHandlerSet(session,tmp);

}
Expand All @@ -140,6 +143,7 @@ private static void buildSMPPEndpointEntity(HierarchicalConfiguration session, S
tmp.setSystemId(session.getString("user"));
tmp.setPassword(session.getString("passwd"));
tmp.setMaxChannels(session.getShort("maxChannels"));
tmp.setSupportLongmsg(SupportLongMessage.NONE);
addBusinessHandlerSet(session,tmp);

}
Expand Down Expand Up @@ -179,6 +183,7 @@ private static void buildCMPPEndpointEntity(HierarchicalConfiguration session, C
tmp.setPassword(session.getString("passwd"));
tmp.setVersion(session.getShort("version", (short) 0x30));
tmp.setMaxChannels(session.getShort("maxChannels"));
tmp.setSupportLongmsg(SupportLongMessage.NONE);
addBusinessHandlerSet(session,tmp);

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.zx.sms.handler.api.smsbiz;

import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Component;

import com.zx.sms.codec.smgp.msg.SMGPDeliverMessage;
import com.zx.sms.codec.smgp.msg.SMGPDeliverRespMessage;
import com.zx.sms.codec.smgp.msg.SMGPReportData;
import com.zx.sms.codec.smgp.msg.SMGPSubmitMessage;
import com.zx.sms.codec.smgp.msg.SMGPSubmitRespMessage;
import com.zx.sms.common.util.CachedMillisecondClock;

import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
Expand All @@ -23,9 +26,26 @@ protected ChannelFuture reponse(final ChannelHandlerContext ctx, Object msg) {

return ctx.writeAndFlush(resp);
}else if(msg instanceof SMGPSubmitMessage) {
SMGPSubmitMessage smgpsubmit = (SMGPSubmitMessage)msg;
SMGPSubmitRespMessage resp = new SMGPSubmitRespMessage();
resp.setSequenceNo(((SMGPSubmitMessage)msg).getSequenceNo());
resp.setSequenceNo(smgpsubmit.getSequenceNo());
resp.setStatus(0);

if(smgpsubmit.isNeedReport()) {
SMGPDeliverMessage deliReport = new SMGPDeliverMessage();
deliReport.setSrcTermId(smgpsubmit.getDestTermIdArray()[0]);
deliReport.setDestTermId(smgpsubmit.getSrcTermId());
SMGPReportData reportData = new SMGPReportData();
reportData.setMsgId(resp.getMsgId());
String t = DateFormatUtils.format(CachedMillisecondClock.INS.now(), "yyMMddHHmm");
reportData.setSubTime(t);
reportData.setDoneTime(t);
reportData.setStat("DELIVRD");
deliReport.setReport(reportData);
ctx.writeAndFlush(deliReport);
}


return ctx.writeAndFlush(resp);
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.zx.sms.codec.smpp.msg.SubmitSm;
import com.zx.sms.codec.smpp.msg.SubmitSmResp;
import com.zx.sms.common.util.ChannelUtil;
import com.zx.sms.common.util.MsgId;
import com.zx.sms.common.util.StandardCharsets;

import io.netty.channel.ChannelFuture;
Expand All @@ -35,26 +36,27 @@ protected ChannelFuture reponse(final ChannelHandlerContext ctx, Object msg) {
return ctx.writeAndFlush(res);
} else if (msg instanceof SubmitSm) {
SubmitSmResp res = ((SubmitSm) msg).createResponse();
String msgcontent = ((SubmitSm) msg).getMsgContent();
byte[] receive = msgcontent.getBytes(StandardCharsets.UTF_8);
res.setMessageId(DigestUtils.md5Hex(receive));
res.setMessageId((new MsgId()).toString());
ChannelFuture future = ctx.writeAndFlush(res);

List<SubmitSm> frags = ((SubmitSm) msg).getFragments();
if (frags != null && !frags.isEmpty()) {
for (SubmitSm fragment : frags) {

SubmitSmResp fragres = ((SubmitSm) fragment).createResponse();
res.setMessageId(String.valueOf(System.currentTimeMillis()));
fragres.setMessageId((new MsgId()).toString());
ctx.writeAndFlush(fragres);

if (((SubmitSm) msg).getRegisteredDelivery() == 1) {
DeliverSmReceipt report = new DeliverSmReceipt();
report.setId(String.valueOf(fragment.getSequenceNumber()));
report.setId(fragres.getMessageId());
report.setSourceAddress(((SubmitSm) msg).getDestAddress());
report.setDestAddress(((SubmitSm) msg).getSourceAddress());
report.setStat("DELIVRD");
report.setText(fragment.getMsgContent());
report.setText("");
report.setErr("");
report.setSub("");
report.setDlvrd("");
report.setSubmit_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
report.setDone_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
ctx.writeAndFlush(report);
Expand All @@ -63,11 +65,14 @@ protected ChannelFuture reponse(final ChannelHandlerContext ctx, Object msg) {
}
if (((SubmitSm) msg).getRegisteredDelivery() == 1) {
DeliverSmReceipt report = new DeliverSmReceipt();
report.setId(String.valueOf(res.getSequenceNumber()));
report.setId(res.getMessageId());
report.setSourceAddress(((SubmitSm) msg).getDestAddress());
report.setDestAddress(((SubmitSm) msg).getSourceAddress());
report.setStat("DELIVRD");
report.setText(((SubmitSm) msg).getMsgContent());
report.setText("");
report.setErr("");
report.setSub("");
report.setDlvrd("");
report.setSubmit_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
report.setDone_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
try {
Expand Down

0 comments on commit c03a9fd

Please sign in to comment.