From 3c2f4dabb3db8a98eb44bf1e3b080252006dfb4b Mon Sep 17 00:00:00 2001 From: bynt Date: Thu, 29 Apr 2021 17:31:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E9=80=81=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E9=80=BB=E8=BE=91=20=E6=9B=B4=E6=94=B9=E5=AE=9E?= =?UTF-8?q?=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TbSendSmsServiceImpl.java | 35 +++++++++++-------- .../me/zhengjie/modules/sms/vo/SendVo.java | 4 +-- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/sms/service/impl/TbSendSmsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/sms/service/impl/TbSendSmsServiceImpl.java index 0bdf5a8..55d0bff 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/sms/service/impl/TbSendSmsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/sms/service/impl/TbSendSmsServiceImpl.java @@ -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 infos = vo.getData(); - for (SendVo.DataInfo info : infos) { - TbTemplate template = lruCache.get(info.getTaskName()); + List mobileList = new ArrayList<>(); + Map> 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 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 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/sms/vo/SendVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/sms/vo/SendVo.java index 5ddaa6c..ebc92c3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/sms/vo/SendVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/sms/vo/SendVo.java @@ -42,8 +42,8 @@ public class SendVo { /** * 业务名称 这个字段是用Base64进行加密 */ - @JsonProperty("list") - private List phoneList; + @JsonProperty("mobile") + private String mobile; } }