zhongrj
2023-06-30 1581ef5a1b4e24ecf21fd95ee6e4b9bd4085b2da
短信发送记录保存修改
5 files modified
1 files added
199 ■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsResult.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsResponseVO.java 24 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java 96 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 50 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsResult.java
@@ -35,4 +35,14 @@
    @ApiModelProperty(value = "消息内容")
    private String content;
    /**
     * 响应状态码
     */
    private String resCode;
    /**
     * 响应消息
     */
    private String resMsg;
}
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsResponseVO.java
New file
@@ -0,0 +1,24 @@
package cn.gistack.alerts.sms.vo;
import lombok.Data;
import java.io.Serializable;
/**
 * 响应类
 * @author zhongrj
 * @date  2023-06-30
 */
@Data
public class SmsResponseVO implements Serializable {
    /**
     * 响应状态码
     */
    private String code;
    /**
     * 响应消息
     */
    private String msg;
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -12,6 +12,7 @@
import cn.gistack.alerts.sms.service.SmsService;
import cn.gistack.alerts.sms.util.SmsUtils;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import cn.gistack.system.user.entity.User;
import cn.gistack.system.user.feign.IUserClient;
import com.alibaba.excel.EasyExcel;
@@ -62,8 +63,11 @@
        if(validatePhone(request.getUserNumber())) {
            // 发送操作
            ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request);
            SmsResponseVO smsResponse = new SmsResponseVO();
            smsResponse.setCode(resultComResult.getCode().toString());
            smsResponse.setMsg(resultComResult.getMsg());
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(request, 1);
            SmsResult smsResult = smsService.saveSendResult(smsResponse,request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
            }
@@ -72,55 +76,6 @@
        }
        // 返回发送信息
        return R.fail(400,"该手机号不存在!");
    }
    /**
     * 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板)
     * request
     * @param smsRequest
     * @return
     */
    @PostMapping("/sendFixedContentByNamedVariableModel")
    public R sendFixedContentByNamedVariableModel(@RequestBody SmsRequest smsRequest){
        // 处理数据(可能是多个手机号情况)
        List<String> list = Arrays.asList(smsRequest.getPhone().split(","));
        // 保存发送结果
        // 记录保存
        SMSSendRequest request = new SMSSendRequest();
        request.setMessageContent(smsRequest.getContent());
        request.setTemplateId(smsRequest.getTemplateId());
        SmsResult smsResult = smsService.saveSendResult(request, list.size());
        // 遍历
        for (String phone : list) {
            DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
            dynSMSSendRequest.setTemplateId(smsRequest.getTemplateId());
            dynSMSSendRequest.setDynData(smsRequest.getParams());
            // 手机号校验
            if(validator(phone)) {
                // 发送邮件短信
                ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(dynSMSSendRequest);
                // 记录保存
                if (null != smsResult) {
                    SMSSendRequest smsSendRequest = new SMSSendRequest();
                    smsSendRequest.setUserNumber(phone);
                    smsSendRequest.setMessageContent(smsRequest.getContent());
                    smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                    // 记录发送记录操作
                    smsService.saveSendRecord(smsSendRequest, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
                }
            }else {
                // 手机号有误记录
                // 记录保存
                SMSSendRequest smsSendRequest = new SMSSendRequest();
                smsSendRequest.setUserNumber(phone);
                smsSendRequest.setMessageContent(smsRequest.getContent());
                smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                // 记录发送记录操作
                smsService.saveSendRecord(smsSendRequest, "400","手机号错误未发送...",null);
            }
        }
        return R.status(true);
    }
    /**
@@ -141,8 +96,11 @@
            request.setTemplateId(templateId);
            // 发送操作
            ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request);
            SmsResponseVO smsResponse = new SmsResponseVO();
            smsResponse.setCode(resultComResult.getCode().toString());
            smsResponse.setMsg(resultComResult.getMsg());
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(request, 1);
            SmsResult smsResult = smsService.saveSendResult(smsResponse,request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
            }
@@ -192,40 +150,8 @@
        // 处理数据(可能是多个手机号情况)
        List<String> list = Arrays.asList(smsRequest.getPhone().split(","));
        // 保存发送结果
        // 记录保存
        SMSSendRequest request = new SMSSendRequest();
        request.setMessageContent(smsRequest.getContent());
        request.setTemplateId("2431012165299");
        SmsResult smsResult = smsService.saveSendResult(request, list.size());
        // 遍历
        for (String phone : list) {
            DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest();
            dynSMSSendRequest.setTemplateId("2431012165299");
            dynSMSSendRequest.setDynData(new String[][]{{"手机号码", "标题"}, {phone, smsRequest.getContent()}});
            // 手机号校验
            if(validator(phone)) {
                // 发送邮件短信
                ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(dynSMSSendRequest);
                // 记录保存
                if (null != smsResult) {
                    SMSSendRequest smsSendRequest = new SMSSendRequest();
                    smsSendRequest.setUserNumber(phone);
                    smsSendRequest.setMessageContent(smsRequest.getContent());
                    smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                    // 记录发送记录操作
                    smsService.saveSendRecord(smsSendRequest, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
                }
            }else {
                // 手机号有误记录
                // 记录保存
                SMSSendRequest smsSendRequest = new SMSSendRequest();
                smsSendRequest.setUserNumber(phone);
                smsSendRequest.setMessageContent(smsRequest.getContent());
                smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId());
                // 记录发送记录操作
                smsService.saveSendRecord(smsSendRequest, "400","手机号错误未发送...",null);
            }
        }
        smsService.sendEmailMsg(list,smsRequest);
        // 返回
        return R.status(true);
    }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -3,6 +3,7 @@
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.alerts.sms.entity.SmsResult;
import cn.gistack.alerts.sms.service.SmsService;
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.web.bind.annotation.GetMapping;
@@ -43,8 +44,11 @@
        request.setUserNumber(userNumber);
        request.setTemplateId(templateId);
        request.setMessageContent(messageContent);
        SmsResponseVO smsResponse = new SmsResponseVO();
        smsResponse.setCode(code);
        smsResponse.setMsg(msg);
        // 记录发送记录操作
        SmsResult smsResult = smsService.saveSendResult(request, number);
        SmsResult smsResult = smsService.saveSendResult(smsResponse,request, number);
        if (null != smsResult){
            smsService.saveSendRecord(request, code,msg,smsResult.getId());
        }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -1,10 +1,14 @@
package cn.gistack.alerts.sms.service;
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.alerts.sms.entity.SmsRecord;
import cn.gistack.alerts.sms.entity.SmsRequest;
import cn.gistack.alerts.sms.entity.SmsResult;
import cn.gistack.alerts.sms.excel.SendRainSmsExcel;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import java.util.List;
import java.util.Map;
@@ -34,11 +38,12 @@
    /**
     * 保存短信发送结果
     * @param smsResponse
     * @param request
     * @param number
     * @return
     */
    SmsResult saveSendResult(SMSSendRequest request, Integer number);
    SmsResult saveSendResult(SmsResponseVO smsResponse, SMSSendRequest request, Integer number);
    /**
     * 短信发送记录保存
@@ -87,4 +92,10 @@
     * @return
     */
    Object importSendRainSms(List<SendRainSmsExcel> list,String startTime,String endTime);
    /**
     * 发送邮件提醒短信
     * @param list
     */
    void sendEmailMsg(List<String> list, SmsRequest smsRequest);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -10,6 +10,7 @@
import cn.gistack.alerts.notice.util.FormatUtil;
import cn.gistack.alerts.sms.constant.MinConstant;
import cn.gistack.alerts.sms.entity.SmsRecord;
import cn.gistack.alerts.sms.entity.SmsRequest;
import cn.gistack.alerts.sms.entity.SmsResult;
import cn.gistack.alerts.sms.entity.SmsTemplate;
import cn.gistack.alerts.sms.excel.SendRainSmsExcel;
@@ -19,6 +20,7 @@
import cn.gistack.alerts.sms.service.SmsService;
import cn.gistack.alerts.sms.util.SmsUtils;
import cn.gistack.alerts.sms.vo.SmsRequestTemplate;
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import cn.gistack.sm.intelligentCall.entity.CallNotFillRecord;
import cn.gistack.sm.intelligentCall.feign.OutCallClient;
import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
@@ -81,7 +83,7 @@
        List<ComResult<SMSSendDataResult>> list = new ArrayList<>();
        if (phoneNumbers.size()>0){
            // 先保存结果记录
            SmsResult smsResult = saveSendResult(request, phoneNumbers.size());
            SmsResult smsResult = saveSendResult(null,request, phoneNumbers.size());
            // 遍历发送
            for (String phone : phoneNumbers) {
                request.setUserNumber(phone);
@@ -110,7 +112,7 @@
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(request, templateContent.size());
        SmsResult smsResult = saveSendResult(null,request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
@@ -174,7 +176,7 @@
        request.setTemplateId(smsTemplate.getTemplateId());
        List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
        // 先保存结果记录
        SmsResult smsResult = saveSendResult(request, templateContent.size());
        SmsResult smsResult = saveSendResult(null,request, templateContent.size());
        List<SmsRecord> smsRecordList = new ArrayList<>();
        // 遍历处理
        for (List<String> list : templateContent) {
@@ -261,16 +263,21 @@
    /**
     * 发送记录保存
     * @param smsResponse 响应消息
     * @param request 发送信息
     * @param number 号码个数
     */
    @Override
    public SmsResult saveSendResult(SMSSendRequest request,Integer number) {
    public SmsResult saveSendResult(SmsResponseVO smsResponse, SMSSendRequest request, Integer number) {
        // 先保存结果表
        SmsResult smsResult = new SmsResult();
        smsResult.setTemplateId(request.getTemplateId());
        smsResult.setContent(request.getMessageContent());
        smsResult.setNumber(number);
        if (null!= smsResponse) {
            smsResult.setResCode(smsResponse.getCode());
            smsResult.setResMsg(smsResponse.getMsg());
        }
        //插入记录
        boolean save = smsResultService.save(smsResult);
        if (save){
@@ -354,7 +361,10 @@
                        dyns[rowNum++] = cols;
                    }
                    ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns);
                    SmsResult smsResult = getSaveSmsResult(templateId, rows, "");
                    SmsResponseVO smsResponse = new SmsResponseVO();
                    smsResponse.setCode(resultComResult.getCode().toString());
                    smsResponse.setMsg(resultComResult.getMsg());
                    SmsResult smsResult = getSaveSmsResult(smsResponse,templateId, rows, "");
                    if (null != smsResult) {
                        List<SmsRecord> smsRecordList = new ArrayList<>();
                        Pattern compile = Pattern.compile("[^0-9]");
@@ -386,18 +396,19 @@
    /**
     * 保存短信发送结果
     * @param smsResponse
     * @param templateId
     * @param rows
     * @param content
     * @return
     */
    private SmsResult getSaveSmsResult(String templateId, String[] rows, String content) {
    private SmsResult getSaveSmsResult(SmsResponseVO smsResponse,String templateId, String[] rows, String content) {
        SMSSendRequest request = new SMSSendRequest();
        request.setTemplateId(templateId);
        request.setMessageContent(content);
        request.setUserNumber("");
        // 先保存结果记录
        return saveSendResult(request, rows.length);
        return saveSendResult(smsResponse,request, rows.length);
    }
    /**
@@ -563,7 +574,10 @@
        }
        //请求参数
        ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
        SmsResult smsResult = getSaveSmsResult(smsTemplate.getTemplateId(), rows, "");
        SmsResponseVO smsResponse = new SmsResponseVO();
        smsResponse.setCode(resultComResult.getCode().toString());
        smsResponse.setMsg(resultComResult.getMsg());
        SmsResult smsResult = getSaveSmsResult(smsResponse,smsTemplate.getTemplateId(), rows, "");
        // 异步记录发送记录
        asyncService.batchSaveSendRecord(smsResult,rows,smsTemplate,resultComResult);
        // 返回
@@ -572,5 +586,23 @@
        return map;
    }
    /**
     * 发送邮件提醒短信
     * @param list
     */
    @Override
    public void sendEmailMsg(List<String> list, SmsRequest smsRequest) {
        String templateId = "2431012165299";
        // 获取水库个数
        List<String> errPhones = new ArrayList<>();
        // 去重
        Set<String> hashSet = new HashSet<>(list);
        // 查询短信模板
        SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
        String param = smsRequest.getContent();
        // 拼接短信标题数组
        String [] titleArr = getSmsTitleArr(smsTemplate);
        // 批量发送短信
        Map<String, Object> batchSendSmsMap = batchSendSms(hashSet, titleArr, param, smsTemplate,errPhones);
    }
}