package cn.gistack.alerts.sms.service.impl;
|
|
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.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.alerts.alarmRule.entity.AlarmRecordDetail;
|
import cn.gistack.alerts.alarmRule.service.AlarmRecordDetailService;
|
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;
|
import cn.gistack.alerts.sms.service.ISmsRecordService;
|
import cn.gistack.alerts.sms.service.ISmsResultService;
|
import cn.gistack.alerts.sms.service.ISmsTemplateService;
|
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;
|
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.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
import java.util.stream.Collectors;
|
|
import static cn.gistack.alerts.sms.util.SmsUtils.validator;
|
|
/**
|
* 短信发送服务实现层
|
* @author zhongrj
|
* @date 2023-05-30
|
*/
|
@Service
|
public class SmsServiceImpl implements SmsService {
|
|
@Autowired
|
private ISmsRecordService smsRecordService;
|
|
@Autowired
|
private AlarmRecordDetailService alarmRecordDetailService;
|
|
@Autowired
|
private ISmsResultService smsResultService;
|
|
@Autowired
|
private ISmsTemplateService smsTemplateService;
|
|
@Autowired
|
private BladeRedis bladeRedis;
|
|
@Autowired
|
private OutCallClient outCallClient;
|
|
@Autowired
|
private IAttResManagePersonClient attResManagePersonClient;
|
|
@Autowired
|
private SmsAsyncService asyncService;
|
|
/**
|
* 发送 xx 变量模板短信
|
* @param phoneNumbers 手机号集合
|
* @param request 内容对象
|
* @return
|
*/
|
@Override
|
public Object sendXXMsg(SMSSendRequest request, List<String> phoneNumbers) {
|
List<ComResult<SMSSendDataResult>> list = new ArrayList<>();
|
if (phoneNumbers.size()>0){
|
// 先保存结果记录
|
SmsResult smsResult = saveSendResult(null,request, phoneNumbers.size());
|
// 遍历发送
|
for (String phone : phoneNumbers) {
|
request.setUserNumber(phone);
|
// 发送
|
ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request);
|
if(null != smsResult) {
|
// 保存记录
|
saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId());
|
}
|
list.add(result);
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 发送 具名 变量模板短信(告警定制)
|
* @param smsRequestTemplate
|
* @return
|
*/
|
@Override
|
public Map<String, 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(null,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}};
|
//请求参数
|
ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
|
|
SmsRecord smsRecord = new SmsRecord();
|
if (null != smsResult){
|
alarmRecordDetail.setPhone(list.get(0));
|
// 设置手机号
|
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 = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
|
if (null != smsRecord){
|
alarmRecordDetail.setAlarmContent(format);
|
alarmRecordDetail.setSendRecordId(smsRecord.getId());
|
alarmRecordDetail.setCreateTime(new Date());
|
// 保存告警记录详情信息
|
boolean save = alarmRecordDetailService.save(alarmRecordDetail);
|
}
|
}
|
smsRecordList.add(smsRecord);
|
}
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("smsRecord",smsRecordList.size());
|
// 返回
|
return map;
|
}
|
|
/**
|
* 保存站内信记录信息
|
* @param smsRequestTemplate
|
* @return
|
*/
|
@Override
|
public Map<String, Object> saveInStationInfo(SmsRequestTemplate smsRequestTemplate) {
|
// 取出数据
|
SMSSendRequest request = new SMSSendRequest();
|
SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate();
|
request.setTemplateId(smsTemplate.getTemplateId());
|
List<List<String>> templateContent = smsRequestTemplate.getTemplateContent();
|
// 先保存结果记录
|
SmsResult smsResult = saveSendResult(null,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("站内信");
|
// 未读
|
alarmRecordDetail.setStatus(1);
|
// 删除 最后一个 告警记录id
|
list.remove(list.size() - 1);
|
// 删除 0 水库编码
|
list.remove(0);
|
|
SmsRecord smsRecord = new SmsRecord();
|
if (null != smsResult){
|
alarmRecordDetail.setPhone(list.get(0));
|
// 设置手机号
|
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 = saveSendRecord(request, "", "", smsResult.getId());
|
if (null != smsRecord){
|
alarmRecordDetail.setAlarmContent(format);
|
alarmRecordDetail.setSendRecordId(smsRecord.getId());
|
alarmRecordDetail.setCreateTime(new Date());
|
// 保存告警记录详情信息
|
boolean save = alarmRecordDetailService.save(alarmRecordDetail);
|
}
|
}
|
smsRecordList.add(smsRecord);
|
}
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("smsRecord",smsRecordList);
|
map.put("smsResult",smsResult);
|
// 返回
|
return map;
|
}
|
|
/**
|
* 发送降雨短信--批量一次发送
|
* @param params 具名变量头
|
* @return
|
*/
|
@Override
|
public Object sendSignRainMsg(Map<String, Object> params) {
|
String[] titleArr = params.get("title").toString().split(",");
|
String data = params.get("data").toString();
|
String templateId = params.get("templateId").toString();
|
// 查询短信模板
|
SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
|
List<String> phones = (List<String>)params.get("phones");
|
List<String> errPhones = new ArrayList<>();
|
// 手机号去重
|
Set<String> hashSet = new HashSet<>();
|
for (String phone : phones) {
|
hashSet.add(phone);
|
}
|
// 批量发送短信
|
Map<String, Object> batchSendSmsMap = batchSendSms(hashSet, titleArr, data, smsTemplate,errPhones);
|
ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult");
|
errPhones = (List<String>) batchSendSmsMap.get("errPhones");
|
// 计算差值
|
Integer diff = phones.size() - hashSet.size();
|
if (resultComResult.getCode()==0){
|
String successMsg = "发送成功!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "
|
+errPhones.size()+" 个,发送成功号码 "+ hashSet.size() + " 个。";
|
// 返回
|
return R.data(200,successMsg,null);
|
}
|
String errorMsg = "发送失败!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "+errPhones.size()+
|
" 个,发送异常号码 "+ hashSet.size()+" 个,异常原因" + resultComResult.getMsg() + "。";
|
// 返回
|
return R.data(400,errorMsg,null);
|
}
|
|
|
/**
|
* 发送记录保存
|
* @param smsResponse 响应消息
|
* @param request 发送信息
|
* @param number 号码个数
|
*/
|
@Override
|
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){
|
return smsResult;
|
}
|
// 返回
|
return null;
|
}
|
|
|
/**
|
* 保存发送短信记录信息
|
* @param request
|
* @param code 响应code
|
* @param sendMsg 响应消息
|
* @param resultId
|
*/
|
@Override
|
public SmsRecord saveSendRecord(SMSSendRequest request, String code, String sendMsg, Long resultId) {
|
// 在保存明细
|
SmsRecord smsRecord = new SmsRecord();
|
smsRecord.setTel(request.getUserNumber());
|
smsRecord.setContent(request.getMessageContent());
|
smsRecord.setTemplateId(request.getTemplateId());
|
smsRecord.setResultId(resultId);
|
smsRecord.setResponseStatus(code);
|
smsRecord.setResponseMsg(sendMsg);
|
//插入记录
|
smsRecordService.save(smsRecord);
|
// 返回
|
return smsRecord;
|
}
|
|
/**
|
* 外呼未接通-发送短信
|
* @param taskId
|
* @param time
|
* @return
|
*/
|
@Override
|
public String sendSmsByOutCallNotConnect(String taskId,String time) {
|
String templateId = "2431012249882";
|
// 查询符合当前时间外呼任务id集合
|
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
List<String> taskIdList = smsTemplateService.getTaskIdListByTime(format);
|
if (taskIdList.size()>0) {
|
// 查询当前任务未接通的人员信息(包含水库编号)
|
List<Map<String, Object>> list = smsTemplateService.getNotConnectPatrolPersonList(taskIdList, null);
|
SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
|
if (list.size() > 0) {
|
List<Map<String, Object>> newList = new ArrayList<>();
|
// 比对
|
for (Map<String, Object> map : list) {
|
// 获取任务id
|
String redisByTaskId = bladeRedis.get(MinConstant.is_send_prefix + map.get("callId").toString());
|
// 如果为null,并且不能匹配,加入发送短信集合
|
if (redisByTaskId == null) {
|
newList.add(map);
|
}
|
}
|
if (newList.size() > 0) {
|
// 组装短信数据
|
StringBuilder builder = new StringBuilder();
|
// 遍历
|
for (Map<String, Object> map : newList) {
|
builder.append(map.get("userPhone") + ",")
|
.append(time + ",")
|
.append(map.get("waterName") + ",")
|
.append(MinConstant.fillWaterInfoUrl + "?" + "callId=" + map.get("callId"))
|
.append(";");
|
}
|
String datas = builder.toString();
|
String title = "手机号码,时间范围,水库名称,访问链接";
|
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;
|
}
|
ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(templateId, dyns);
|
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]");
|
Integer result = Integer.parseInt(compile.matcher(time).replaceAll("").trim());
|
// 分钟或小时
|
Long validTime = time.contains("分钟") ? 60L * result : 60L * 60 * result;
|
// 遍历保存
|
for (Map<String, Object> map : newList) {
|
// 保存redis
|
// 已发送短信的人员对应呼叫id的过期时间
|
bladeRedis.setEx(MinConstant.is_send_prefix + map.get("callId").toString(), map.get("taskId").toString(), MinConstant.is_send_time);
|
// 填报过期时间
|
bladeRedis.setEx(MinConstant.fill_info_prefix + map.get("callId").toString(), map.get("taskId").toString(), validTime);
|
// 封装短息记录数据
|
SmsRecord smsRecord = getSmsRecord(time, templateId, smsTemplate, resultComResult, smsResult, map);
|
// 加入集合
|
smsRecordList.add(smsRecord);
|
}
|
// 批量保存记录
|
Integer count = smsRecordService.batchSaveSendRecord(smsRecordList);
|
// 返回
|
return count.toString();
|
}
|
}
|
}
|
}
|
return null;
|
}
|
|
/**
|
* 保存短信发送结果
|
* @param smsResponse
|
* @param templateId
|
* @param rows
|
* @param content
|
* @return
|
*/
|
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(smsResponse,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;
|
}
|
|
|
/**
|
* 通过手机号获取外呼未接通已发短信通知的人员水库信息
|
* @param callId 呼叫id
|
* @return
|
*/
|
@Override
|
public Object getCallNotConnectSmsNoticeInfo(String callId) {
|
Map<String, Object> map = new HashMap<>(2);
|
boolean flag = false;
|
List<Map<String, Object>> list = new ArrayList<>();
|
// 通过手机号查询外呼任务id
|
String taskId = bladeRedis.get(MinConstant.is_send_prefix + callId);
|
// 判断
|
if (null!=taskId && !taskId.equals("")){
|
List<String> taskIdList = new ArrayList<>();
|
taskIdList.add(taskId);
|
// 通过手机号和外呼任务id 查询水库人员信息
|
list = smsTemplateService.getNotConnectPatrolPersonList(taskIdList,callId);
|
// 查询是否填报
|
CallNotFillRecord callNotFillRecordInfo = outCallClient.getCallNotFillRecordInfo(callId);
|
if (callNotFillRecordInfo != null){
|
flag = true;
|
}
|
// 封装数据
|
map.put("list",list);
|
map.put("isFill",flag);
|
// 返回
|
return map;
|
}
|
// 没有,已过期
|
return map;
|
}
|
|
/**
|
* 导入表格发送降雨短信
|
* @param list 导入的excel 集合数据
|
* @param startTime 短信内容填报起始时间
|
* @param endTime 短信内容填报截止时间
|
* @return
|
*/
|
@Override
|
public Object importSendRainSms(List<SendRainSmsExcel> list,String startTime,String endTime) {
|
String templateId = "2431012251309";
|
// 获取水库个数
|
Integer size = list.size();
|
List<String> errPhones = new ArrayList<>();
|
// 转换
|
List<String> stringList = list.stream().map(SendRainSmsExcel::getWaterCode).collect(Collectors.toList());
|
// 通过水库代码获取巡查责任人及技术责任人手机号
|
Set<String> personList = attResManagePersonClient.getPersonListByWaterCodeList(stringList);
|
// 查询短信模板
|
SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id", templateId));
|
String param = startTime + "-" + endTime;
|
// 拼接短信标题数组
|
String [] titleArr = getSmsTitleArr(smsTemplate);
|
// 批量发送短信
|
Map<String, Object> batchSendSmsMap = batchSendSms(personList, titleArr, param, smsTemplate,errPhones);
|
ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult");
|
errPhones = (List<String>) batchSendSmsMap.get("errPhones");
|
// 计算差值
|
Integer diff = size - errPhones.size();
|
if (resultComResult.getCode()==0){
|
String successMsg = "发送成功!共导入水库个数 "+ size +" 个,其中发送号码 "+ diff + " 个。";
|
// 返回
|
return R.data(200,successMsg,null);
|
}
|
String errorMsg = "发送失败!共导入水库个数 "+ size +" 个,发送异常号码 "+ diff + " 个,异常原因" + resultComResult.getMsg() + "。";
|
// 返回
|
return R.data(400,errorMsg,null);
|
}
|
|
/**
|
* 拼接短信标题数组
|
* @param smsTemplate
|
* @return
|
*/
|
private String[] getSmsTitleArr(SmsTemplate smsTemplate) {
|
String title = FormatUtil.composeMessage(smsTemplate.getContent());
|
// 返回
|
return title.split(",");
|
}
|
|
/**
|
* 批量发送动态短信
|
* @param phoneList
|
* @param titleArr 示例: [手机号码,水库名称,水位值]
|
* @param param 示例: ***水库,15.12
|
* @param smsTemplate
|
* @return
|
*/
|
private Map<String, Object> batchSendSms(Set<String> phoneList,String[] titleArr,String param,SmsTemplate smsTemplate,List<String> errPhones){
|
Map<String, Object> map = new HashMap<>();
|
StringBuilder builder = new StringBuilder();
|
// 遍历,拼接短信
|
if (phoneList.size()>0){
|
for (String phone : phoneList) {
|
if (validator(phone)){
|
builder.append(phone+","+ param).append(";");
|
}else {
|
// 异常手机号
|
errPhones.add(phone);
|
}
|
}
|
}
|
String datas = builder.toString();
|
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;
|
}
|
//请求参数
|
ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns);
|
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);
|
// 返回
|
map.put("errPhones",errPhones);
|
map.put("resultComResult",resultComResult);
|
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);
|
}
|
}
|