| | |
| | | import cn.gistack.sm.intelligentCall.feign.OutCallClient; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | |
| | | // 组装数据 |
| | | String[][] dyns = new String[][]{{smsRequestTemplate.getTitle()}, {row}}; |
| | | //请求参数 |
| | | DynSMSSendRequest sendRequest = new DynSMSSendRequest(); |
| | | sendRequest.setTemplateId(smsTemplate.getTemplateId()); |
| | | sendRequest.setDynData(dyns); |
| | | // 发送 |
| | | ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest); |
| | | ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns); |
| | | |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | if (null != smsResult){ |
| | |
| | | dyns[rowNum++] = cols; |
| | | } |
| | | //请求参数 |
| | | DynSMSSendRequest sendRequest = new DynSMSSendRequest(); |
| | | sendRequest.setTemplateId(templateId); |
| | | sendRequest.setDynData(dyns); |
| | | // 发送 |
| | | ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest); |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setTemplateId(templateId); |
| | | request.setMessageContent(content); |
| | | request.setUserNumber(""); |
| | | // 先保存结果记录 |
| | | SmsResult smsResult = saveSendResult(request, rows.length); |
| | | ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns); |
| | | SmsResult smsResult = getSaveSmsResult(templateId, rows, content); |
| | | if (null != smsResult){ |
| | | List<SmsRecord> list = new ArrayList<>(); |
| | | // 遍历保存 |
| | |
| | | StringBuilder builder = new StringBuilder(); |
| | | // 遍历 |
| | | for (Map<String, Object> map : newList) { |
| | | // String callId = null; |
| | | // try { |
| | | // callId = URLEncoder.encode("callId=" + map.get("callId"), "UTF-8"); |
| | | // } catch (UnsupportedEncodingException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | builder.append(map.get("userPhone") + ",") |
| | | .append(time + ",") |
| | | .append(map.get("waterName") + ",") |
| | |
| | | String[] cols = row.split(","); |
| | | dyns[rowNum++] = cols; |
| | | } |
| | | //请求参数 |
| | | DynSMSSendRequest sendRequest = new DynSMSSendRequest(); |
| | | sendRequest.setTemplateId(templateId); |
| | | sendRequest.setDynData(dyns); |
| | | // 发送 |
| | | ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(sendRequest); |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setTemplateId(templateId); |
| | | request.setMessageContent(""); |
| | | request.setUserNumber(""); |
| | | // 先保存结果记录 |
| | | SmsResult smsResult = saveSendResult(request, rows.length); |
| | | ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns); |
| | | SmsResult smsResult = getSaveSmsResult(templateId, rows, ""); |
| | | if (null != smsResult) { |
| | | List<SmsRecord> smsRecordList = new ArrayList<>(); |
| | | Pattern compile = Pattern.compile("[^0-9]"); |
| | |
| | | Long validTime = time.contains("分钟") ? 60L * result : 60L * 60 * result; |
| | | // 遍历保存 |
| | | for (Map<String, Object> map : newList) { |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setId(IdWorker.getId()); |
| | | smsRecord.setTel(map.get("userPhone").toString()); |
| | | String callId = null; |
| | | // try { |
| | | // callId = URLEncoder.encode("callId=" + map.get("callId"), "UTF-8"); |
| | | // } catch (UnsupportedEncodingException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // 内容处理 |
| | | String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // 拼接内容 |
| | | String arrString = time + "," + |
| | | map.get("waterName").toString() + "," + |
| | | MinConstant.fillWaterInfoUrl + "?" + "callId=" + map.get("callId") ; |
| | | // 格式转换 |
| | | String format = String.format(s, arrString.split(",")); |
| | | smsRecord.setContent(format); |
| | | smsRecord.setTemplateId(templateId); |
| | | smsRecord.setResultId(smsResult.getId()); |
| | | smsRecord.setResponseStatus(resultComResult.getCode().toString()); |
| | | smsRecord.setResponseMsg(resultComResult.getMsg()); |
| | | // 保存redis |
| | | bladeRedis.setEx(MinConstant.is_send_prefix + map.get("callId").toString(), taskId, 2 * 60 * 60L); |
| | | // 已发送短信的人员对应呼叫id的过期时间 |
| | | bladeRedis.setEx(MinConstant.is_send_prefix + map.get("callId").toString(), taskId, MinConstant.is_send_time); |
| | | // 填报过期时间 |
| | | bladeRedis.setEx(MinConstant.fill_info_prefix + map.get("callId").toString(), taskId, validTime); |
| | | // 封装短息记录数据 |
| | | SmsRecord smsRecord = getSmsRecord(time, templateId, smsTemplate, resultComResult, smsResult, map); |
| | | // 加入集合 |
| | | smsRecordList.add(smsRecord); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 保存短信发送结果 |
| | | * @param templateId |
| | | * @param rows |
| | | * @param content |
| | | * @return |
| | | */ |
| | | private SmsResult getSaveSmsResult(String templateId, String[] rows, String content) { |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setTemplateId(templateId); |
| | | request.setMessageContent(content); |
| | | request.setUserNumber(""); |
| | | // 先保存结果记录 |
| | | return saveSendResult(request, rows.length); |
| | | } |
| | | |
| | | /** |
| | | * 动态批量发送短信 |
| | | * @param templateId |
| | | * @param dyns |
| | | * @return |
| | | */ |
| | | private ComResult<DynSMSSendDataResult> sendDynSMSSendDataResultComResult(String templateId, String[][] dyns) { |
| | | //请求参数 |
| | | DynSMSSendRequest sendRequest = new DynSMSSendRequest(); |
| | | sendRequest.setTemplateId(templateId); |
| | | sendRequest.setDynData(dyns); |
| | | // 发送 |
| | | return SmsUtils.dynSendMethod(sendRequest); |
| | | } |
| | | |
| | | /** |
| | | * 短信记录数据处理 |
| | | * @param time |
| | | * @param templateId |
| | | * @param smsTemplate |
| | | * @param resultComResult |
| | | * @param smsResult |
| | | * @param map |
| | | * @return |
| | | */ |
| | | @NotNull |
| | | private SmsRecord getSmsRecord(String time, String templateId, SmsTemplate smsTemplate, ComResult<DynSMSSendDataResult> resultComResult, SmsResult smsResult, Map<String, Object> map) { |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setId(IdWorker.getId()); |
| | | smsRecord.setTel(map.get("userPhone").toString()); |
| | | // 内容处理 |
| | | String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // 拼接内容 |
| | | String arrString = time + "," + |
| | | map.get("waterName").toString() + "," + |
| | | MinConstant.fillWaterInfoUrl + "?" + "callId=" + map.get("callId") ; |
| | | // 格式转换 |
| | | String format = String.format(s, arrString.split(",")); |
| | | smsRecord.setContent(format); |
| | | smsRecord.setTemplateId(templateId); |
| | | smsRecord.setResultId(smsResult.getId()); |
| | | smsRecord.setResponseStatus(resultComResult.getCode().toString()); |
| | | smsRecord.setResponseMsg(resultComResult.getMsg()); |
| | | // 返回 |
| | | return smsRecord; |
| | | } |
| | | |
| | | /** |
| | | * 校验手机号码 |
| | | */ |
| | | public static boolean validator(String phone) { |