| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- package com.xunmei.sms.utils;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.RandomUtil;
- import com.dc.eai.data.CompositeData;
- import com.dc.eai.data.Field;
- import com.dc.eai.data.FieldAttr;
- import com.dc.eai.data.FieldType;
- import com.xunmei.system.api.vo.SmsInfoVo;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.util.Date;
- /**
- * 短信工具类
- */
- public class SmsUtil {
- private static Logger logger = LoggerFactory.getLogger(SmsUtil.class);
- /**
- * 消费者系统流水号格式:系统编号(5位)+本系统交易日期(8位:YYYYMMDD)+业务流水序号(10位)
- * @param systemCode 系统编号
- * @return
- */
- public static String getConsumerSeqNo(String systemCode,String tranDate){
- StringBuffer sb = new StringBuffer();
- //系统编号
- sb.append(systemCode);
- //本系统交易日期
- sb.append(tranDate);
- //业务流水序号
- String seqNo = RandomUtil.randomNumbers(10);
- sb.append(seqNo);
- return sb.toString();
- }
- /**
- * 生成短信请求系统头
- * @return
- */
- public static CompositeData getSysHead(String systemCode,String systemName,String serviceCode,String serviceScene){
- CompositeData sysData = new CompositeData();
- Date nowTime = new Date();
- String yyyyMMdd = DateUtil.format(nowTime, "yyyyMMdd");
- String hhmmss = DateUtil.format(nowTime, "hhmmss");
- //发送方机构ID,当前系统没有设置为空
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("");
- sysData.addField("BRANCH_ID", field);
- //消费者系统编号 ESB分配的系统编号
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(systemCode);
- sysData.addField("CONSUMER_ID", field);
- //消费者系统流水号(直接请求系统) 系统编号(5位)+本系统交易日期(8位:YYYYMMDD)+业务流水序号(10位)
- String consumerSeqNo = SmsUtil.getConsumerSeqNo(systemCode,yyyyMMdd);
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(consumerSeqNo);
- sysData.addField("CONSUMER_SEQ_NO", field);
- //文件标识 0-非文件,1-文件
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("0");
- sysData.addField("FILE_FLAG", field);
- //原始发起方系统编号 和消费者系统编号一致
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(systemCode);
- sysData.addField("ORG_SYS_ID", field);
- //原始发起方系统流水号 和 消费者系统编号一致
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(consumerSeqNo);
- sysData.addField("ORG_SYS_SEQ_NO", field);
- //服务代码
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(serviceCode);
- sysData.addField("SERVICE_CODE", field);
- //服务场景
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(serviceScene);
- sysData.addField("SERVICE_SCENE", field);
- //发送方网点号,默认设置为空
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("");
- sysData.addField("SUB_BRANCH_ID", field);
- //交易日期 yyyyMMdd
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(yyyyMMdd);
- sysData.addField("TRAN_DATE", field);
- //交易时间 hh:mm:ss
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(hhmmss);
- sysData.addField("TRAN_TIMESTAMP", field);
- //交易标志 0-正常,1-补正,2-冲销
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("0");
- sysData.addField("TRAN_FLAG", field);
- //交易模式
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("ONLINE");
- sysData.addField("TRAN_MODE", field);
- //交易柜员号,默认为空
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue("");
- sysData.addField("USER_ID", field);
- //交易系统名
- field = new Field(new FieldAttr(FieldType.FIELD_STRING, 15, 0));
- field.setValue(systemName);
- sysData.addField("WS_ADDR", field);
- return sysData;
- }
- /**
- * 构建应用消息体
- * @return
- */
- private static CompositeData getAppHead(){
- CompositeData appData = new CompositeData();
- //KEY_MSG_FLAG 0-无,1-多页式
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 1, 0));
- field.setValue("0");
- appData.addField("KEY_MSG_FLAG", field);
- return appData;
- }
- /**
- * 构建发送消息体
- * @param source
- * @return
- */
- private static CompositeData getBody(SmsInfoVo source){
- CompositeData body = new CompositeData();
- if (source.getTranType() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 6, 0));
- field.setValue(source.getTranType());
- body.addField("TRAN_TYPE", field);
- }
- if (source.getBelongBranchId() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 9, 0));
- field.setValue(source.getBelongBranchId());
- body.addField("BELONG_BRANCH_ID", field);
- }
- if (source.getCustNo() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 22, 0));
- field.setValue(source.getCustNo());
- body.addField("CUST_NO", field);
- }
- if (source.getCustName() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 50, 0));
- field.setValue(source.getCustNo());
- body.addField("CUST_NAME", field);
- }
- if (source.getSex() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 2, 0));
- field.setValue(source.getSex());
- body.addField("SEX", field);
- }
- if (source.getMobile() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 20, 0));
- field.setValue(source.getMobile());
- body.addField("MOBILE", field);
- }
- if (source.getAcctNo() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 32, 0));
- field.setValue(source.getAcctNo());
- body.addField("ACCT_NO", field);
- }
- if (source.getOccurDate() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 10, 0));
- field.setValue(source.getOccurDate());
- body.addField("OCCUR_DATE", field);
- }
- if (source.getOccurTime() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 10, 0));
- field.setValue(source.getOccurTime());
- body.addField("OCCUR_TIME", field);
- }
- if (source.getTranAmt1() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 17, 0));
- field.setValue(source.getTranAmt1());
- body.addField("TRAN_AMT1", field);
- }
- if (source.getTranAmt2() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 17, 0));
- field.setValue(source.getTranAmt2());
- body.addField("TRAN_AMT2", field);
- }
- if (source.getTranAmt3() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 17, 0));
- field.setValue(source.getTranAmt3());
- body.addField("TRAN_AMT3", field);
- }
- if (source.getPayoutStoreBit1() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 1, 0));
- field.setValue(source.getPayoutStoreBit1());
- body.addField("PAYOUT_STORE_BIT1", field);
- }
- if (source.getPayoutStoreBit2() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 1, 0));
- field.setValue(source.getPayoutStoreBit2());
- body.addField("PAYOUT_STORE_BIT2", field);
- }
- if (source.getPayoutStoreBit3() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 1, 0));
- field.setValue(source.getPayoutStoreBit3());
- body.addField("PAYOUT_STORE_BIT3", field);
- }
- if (source.getTranRemark() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 30, 0));
- field.setValue(source.getTranRemark());
- body.addField("TRAN_REMARK", field);
- }
- if (source.getAcctStatus() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 100, 0));
- field.setValue(source.getAcctStatus());
- body.addField("ACCT_STATUS", field);
- }
- if (source.getRetMsg() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 10, 0));
- field.setValue(source.getRetMsg());
- body.addField("RET_MSG", field);
- }
- if (source.getChannelType() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 2, 0));
- field.setValue(source.getChannelType());
- body.addField("CHANNEL_TYPE", field);
- }
- if (source.getBak1() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 50, 0));
- field.setValue(source.getBak1());
- body.addField("BAK1", field);
- }
- if (source.getBak2() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 50, 0));
- field.setValue(source.getBak2());
- body.addField("BAK2", field);
- }
- if (source.getBak3() != null) {
- Field field = new Field(new FieldAttr(FieldType.FIELD_STRING, 50, 0));
- field.setValue(source.getBak3());
- body.addField("BAK3", field);
- }
- return body;
- }
- /**
- * 构建发送消息体
- * @param source 构建body实体
- * @param systemCode 系统编号
- * @param systemName 系统名称
- * @param serviceCode 服务code
- * @param serviceScene 服务场景
- * @return
- */
- public static CompositeData createSmsBody(SmsInfoVo source, String systemCode, String systemName, String serviceCode, String serviceScene) {
- try {
- /***********************************************************************
- * *********构造请求数据,定义相关结构体*******
- **********************************************************************/
- CompositeData reqData = new CompositeData();
- //构建服务
- CompositeData sysHead = getSysHead(systemCode, systemName, serviceCode, serviceScene);
- CompositeData appHead = getAppHead();
- CompositeData body = getBody(source);
- reqData.addStruct("SYS_HEAD", sysHead);
- reqData.addStruct("APP_HEAD", appHead);
- reqData.addStruct("BODY", body);
- return reqData;
- } catch (Exception ex) {
- logger.error("【发送短信】转换数据异常", ex);
- return null;
- }
- }
- }
|