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); } }