zhongrj
2023-06-01 dc5a0d769ba6c352d89c04c67b66ed1869ec1049
短信发送修改
4 files modified
193 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java 4 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/SmsService.java 11 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsServiceImpl.java 149 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRequestTemplate.java 29 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
@@ -295,8 +295,6 @@
        return R.status(true);
    }
    /**
     * 发送 xx 变量模板短信
     * @param smsRequest 发送对象
@@ -315,6 +313,6 @@
     */
    @PostMapping("/sendSignMsg")
    public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){
        return R.data(smsService.sendSignMsg(smsRequest.getTitle(),smsRequest.getContent(),smsRequest.getSmsRequest(),smsRequest.getType()));
        return R.data(smsService.sendSignMsg(smsRequest));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/SmsService.java
@@ -1,6 +1,8 @@
package cn.gistack.sm.sms.service;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.sm.sms.entity.SmsTemplate;
import cn.gistack.sm.sms.vo.SmsRequestTemplate;
import java.util.List;
@@ -17,14 +19,13 @@
     * @param request 内容对象
     * @return
     */
    Object sendXXMsg(SMSSendRequest request,List<String> phoneNumbers);
    Object sendXXMsg(SMSSendRequest request,
                     List<String> phoneNumbers);
    /**
     * 发送 具名 变量模板短信
     * @param title 具名变量头
     * @param content 内容详情
     * @param request 内容对象
     * @param smsRequestTemplate
     * @return
     */
    Object sendSignMsg(String title,String content,SMSSendRequest request,Integer type);
    Object sendSignMsg(SmsRequestTemplate smsRequestTemplate);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsServiceImpl.java
@@ -5,18 +5,20 @@
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail;
import cn.gistack.sm.alarmRule.service.AlarmRecordDetailService;
import cn.gistack.sm.sms.entity.SmsRecord;
import cn.gistack.sm.sms.entity.SmsResult;
import cn.gistack.sm.sms.entity.SmsTemplate;
import cn.gistack.sm.sms.service.ISmsRecordService;
import cn.gistack.sm.sms.service.ISmsResultService;
import cn.gistack.sm.sms.service.SmsService;
import cn.gistack.sm.sms.util.SmsUtils;
import cn.gistack.sm.sms.vo.SmsRequestTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 短信发送服务实现层
@@ -28,6 +30,9 @@
    @Autowired
    private ISmsRecordService smsRecordService;
    @Autowired
    private AlarmRecordDetailService alarmRecordDetailService;
    @Autowired
    private ISmsResultService smsResultService;
@@ -61,70 +66,106 @@
    /**
     * 发送 具名 变量模板短信
     * @param title 具名变量头
     * @param content 内容对象
     * @param smsRequestTemplate
     * @return
     */
    @Override
    public Object sendSignMsg(String title, String content, SMSSendRequest request,Integer type) {
        if (type==1){
            String[] rows = content.split(";");
            // 先保存结果记录
            SmsResult smsResult = saveSendResult(request, rows.length);
            List<SmsRecord> list = new ArrayList<>();
            // 遍历发送短信
            for (String row : rows) {
                String[][] dyns = new String[][]{{title}, {row}};
                //请求参数
                DynSMSSendRequest sendRequest = new DynSMSSendRequest();
                sendRequest.setTemplateId(request.getTemplateId());
                sendRequest.setDynData(dyns);
                // 发送
                ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
                SmsRecord smsRecord = new SmsRecord();
                if (null != smsResult){
                    // 保存记录
                    smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId());
                }
                list.add(smsRecord);
            }
            Map<String, Object> map = new HashMap<>(2);
            map.put("smsRecord",list);
            map.put("smsResult",smsResult);
            // 返回
            return map;
        }
        if (type==2){
            String[] titleArr = title.split(",");
            String[] rows = content.split(";");
            String[][] dyns = new String[rows.length + 1][titleArr.length];
            dyns[0] = titleArr;
            int rowNum = 1;
            for (String row : rows) {
                String[] cols = row.split(",");
                dyns[rowNum++] = cols;
            }
    public Object sendSignMsg(SmsRequestTemplate smsRequestTemplate) {
        // 取出数据
        SMSSendRequest request = new SMSSendRequest();
        SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
            alarmRecordDetail.setReservoirNumber(list.get(0));
            alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1)));
            alarmRecordDetail.setAlarmMode("短信");
            // 删除 最后一个 告警记录id
            list.remove(list.size() - 1);
            // 删除 0 水库编码
            list.remove(0);
            // 转换字符串
            String row = String.join(",", list);
            // 组装数据
            String[][] dyns = new String[][]{{smsRequestTemplate.getTitle()}, {row}};
            //请求参数
            DynSMSSendRequest sendRequest = new DynSMSSendRequest();
            sendRequest.setTemplateId(request.getTemplateId());
            sendRequest.setTemplateId(smsTemplate.getTemplateId());
            sendRequest.setDynData(dyns);
            // 发送
            ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
            // 先保存结果记录
            SmsResult smsResult = saveSendResult(request, rows.length);
            SmsRecord smsRecord = new SmsRecord();
            if (null != smsResult){
                // 设置手机号
                request.setUserNumber(list.get(0));
                // 内容处理
                String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s");
                // 短信内容拼接(完成发送的结果信息)
                // 需要删除最前面的手机号
                list.remove(0);
                // 格式转换
                String format = String.format(s, list.toArray());
                // 设置内容
                request.setMessageContent(format);
                // 保存记录
                smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId());
                if (null != smsRecord){
                    alarmRecordDetail.setAlarmContent(format);
                    alarmRecordDetail.setSendRecordId(smsRecord.getId());
                    alarmRecordDetail.setCreateTime(new Date());
                    // 保存告警记录详情信息
                    boolean save = alarmRecordDetailService.save(alarmRecordDetail);
                }
            }
            Map<String, Object> map = new HashMap<>(2);
            map.put("smsRecord",smsRecord);
            map.put("smsResult",smsResult);
            // 返回
            return map;
            smsRecordList.add(smsRecord);
        }
        return null;
        Map<String, Object> map = new HashMap<>(2);
        map.put("smsRecord",smsRecordList);
        map.put("smsResult",smsResult);
        // 返回
        return map;
    }
    /**
     * 发送 具名 变量模板短信--批量一次发送
     * @param title 具名变量头
     * @return
     */
    public Object sendSignMsg(String title, String datas, SMSSendRequest request, Integer type, SmsTemplate smsTemplate) {
        String[] titleArr = title.split(",");
        String[] rows = datas.split(";");
        String[][] dyns = new String[rows.length + 1][titleArr.length];
        dyns[0] = titleArr;
        int rowNum = 1;
        for (String row : rows) {
            String[] cols = row.split(",");
            dyns[rowNum++] = cols;
        }
        //请求参数
        DynSMSSendRequest sendRequest = new DynSMSSendRequest();
        sendRequest.setTemplateId(request.getTemplateId());
        sendRequest.setDynData(dyns);
        // 发送
        ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest);
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(request, rows.length);
        SmsRecord smsRecord = new SmsRecord();
        if (null != smsResult){
            // 保存记录
            smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId());
        }
        Map<String, Object> map = new HashMap<>(2);
        map.put("smsRecord",smsRecord);
        map.put("smsResult",smsResult);
        // 返回
        return map;
    }
    /**
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRequestTemplate.java
@@ -1,6 +1,8 @@
package cn.gistack.sm.sms.vo;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.sm.notice.vo.PersonVO;
import cn.gistack.sm.sms.entity.SmsTemplate;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@@ -19,14 +21,19 @@
    private SMSSendRequest smsRequest;
    /**
     * 发送标题
     * 发送标题(值key)
     */
    private String title;
    /**
     * 内容
     * 发送数据内容(值字符串)
     */
    private String content;
    private String datas;
    /**
     * 内容(短信内容)
     */
    private List<String> content;
    /**
     * 号码集合
@@ -34,7 +41,23 @@
    private List<String> phoneNumbers;
    /**
     * 告警人
     */
    private List<PersonVO> personVOList;
    /**
     * 内容(短信内容)--临时
     */
    private List<List<String>> templateContent;
    /**
     * 类型 1:遍历发送  2:批量发送(一次发多个)
     */
    private Integer type;
    /**
     * 短信模板对象信息
     */
    private SmsTemplate smsTemplate;
}