|
|
|
@ -57,6 +57,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author Enzo
|
|
|
|
@ -70,7 +71,6 @@ import java.util.*;
|
|
|
|
|
public class TbSendSmsServiceImpl implements TbSendSmsService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* hutool 缓存
|
|
|
|
|
*/
|
|
|
|
@ -148,32 +148,36 @@ public class TbSendSmsServiceImpl implements TbSendSmsService {
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void sendSmsBySendVo(SendVo vo) {
|
|
|
|
|
List<SendVo.DataInfo> infos = vo.getData();
|
|
|
|
|
for (SendVo.DataInfo info : infos) {
|
|
|
|
|
TbTemplate template = lruCache.get(info.getTaskName());
|
|
|
|
|
List<String> mobileList = new ArrayList<>();
|
|
|
|
|
Map<String, List<SendVo.DataInfo>> listMap = infos.stream().
|
|
|
|
|
collect(Collectors.groupingBy(SendVo.DataInfo::getTaskName));
|
|
|
|
|
for (String taskName : listMap.keySet()) {
|
|
|
|
|
TbTemplate template = lruCache.get(taskName);
|
|
|
|
|
if (template == null) {
|
|
|
|
|
template = tbTemplateRepository.findByTaskName(info.getTaskName());
|
|
|
|
|
template = tbTemplateRepository.findByTaskName(taskName);
|
|
|
|
|
// 5分钟缓存
|
|
|
|
|
lruCache.put(info.getTaskName(), template,
|
|
|
|
|
lruCache.put(taskName, template,
|
|
|
|
|
DateUnit.MINUTE.getMillis() * DefaultConstant.FIVE_NUMBER);
|
|
|
|
|
}
|
|
|
|
|
log.info(" template as [{}]" , template);
|
|
|
|
|
log.info(" template as [{}]", template);
|
|
|
|
|
if (template == null) {
|
|
|
|
|
log.info("send Sms fail the Template is null ");
|
|
|
|
|
throw new BadRequestException("模板信息为空");
|
|
|
|
|
}
|
|
|
|
|
listMap.get(taskName).forEach(info -> mobileList.add(info.getMobile()));
|
|
|
|
|
Map<String, Object> map = new HashMap<>(DefaultConstant.TWO_NUMBER);
|
|
|
|
|
map.put("baseUrlAddr", template.getLinkUrl());
|
|
|
|
|
map.put("variableList", info.getPhoneList());
|
|
|
|
|
map.put("variableList", mobileList);
|
|
|
|
|
// 接收生成短链参数
|
|
|
|
|
ShortLinkUrlDto urlDto =
|
|
|
|
|
JSONUtil.toBean(HttpUtil.post
|
|
|
|
|
(SmsConstant.SHORT_GENERATION_LINK,
|
|
|
|
|
JSON.toJSONString(map)),
|
|
|
|
|
ShortLinkUrlDto.class);
|
|
|
|
|
log.info(" urlDto response message [{}]" , urlDto);
|
|
|
|
|
if (urlDto == null || urlDto.getData() == null ||
|
|
|
|
|
log.info(" urlDto response message [{}]", urlDto);
|
|
|
|
|
if (urlDto == null || urlDto.getData() == null ||
|
|
|
|
|
urlDto.getStatus() != DefaultConstant.ZERO_NUMBER) {
|
|
|
|
|
log.info("send Sms fail the urlDto is fail urlResponse message [{}]" , urlDto != null ? urlDto.getMsg() : null);
|
|
|
|
|
log.info("send Sms fail the urlDto is fail urlResponse message [{}]", urlDto != null ? urlDto.getMsg() : null);
|
|
|
|
|
throw new BadRequestException("短链生成失败");
|
|
|
|
|
}
|
|
|
|
|
TbSendSms sendSms;
|
|
|
|
@ -187,9 +191,9 @@ public class TbSendSmsServiceImpl implements TbSendSmsService {
|
|
|
|
|
phone = split[1];
|
|
|
|
|
linkUrl = split[0];
|
|
|
|
|
String sendMessage = message.replace
|
|
|
|
|
("${url}",
|
|
|
|
|
StrUtil.SPACE +
|
|
|
|
|
SmsConstant.SHORT_CHAIN_PREFIX + linkUrl);
|
|
|
|
|
("${url}",
|
|
|
|
|
StrUtil.SPACE +
|
|
|
|
|
SmsConstant.SHORT_CHAIN_PREFIX + linkUrl);
|
|
|
|
|
sendSms.setPhone(phone);
|
|
|
|
|
sendSms.setLinkUrl(linkUrl);
|
|
|
|
|
sendSms.setIsLinkCallback(DefaultConstant.ZERO_NUMBER);
|
|
|
|
@ -200,8 +204,9 @@ public class TbSendSmsServiceImpl implements TbSendSmsService {
|
|
|
|
|
sendSms.setSendStatus(sendResult ? StatusEnum.SUCCESS.getValue() : StatusEnum.UNSUCCESSFUL.getValue());
|
|
|
|
|
tbSendSmsRepository.save(sendSms);
|
|
|
|
|
}
|
|
|
|
|
log.info("======= [ sendSms send size {} ] =======", info.getPhoneList().size());
|
|
|
|
|
log.info("======= [ sendSms send size {} ] =======", listMap.get(taskName).size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -222,7 +227,7 @@ public class TbSendSmsServiceImpl implements TbSendSmsService {
|
|
|
|
|
(RandomUtil.randomString(DefaultConstant.TEN_NUMBER));
|
|
|
|
|
String signature = SmsConstant.APP_ID +
|
|
|
|
|
SmsConstant.TOKEN +
|
|
|
|
|
DateUtil.format
|
|
|
|
|
DateUtil.format
|
|
|
|
|
(new Date(), SmsConstant.FORMATE_TIMESTAMP);
|
|
|
|
|
signature = SecureUtil.md5(signature).toUpperCase();
|
|
|
|
|
// 配置 sign
|
|
|
|
|