短信优化

This commit is contained in:
mashuai 2025-12-01 17:56:38 +08:00
parent a575b43694
commit c6365050e3
2 changed files with 100 additions and 8 deletions

View File

@ -24,7 +24,9 @@ import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE; import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE;
import static com.bonus.common.biz.constant.MaterialConstants.SEND_SUCCESS; import static com.bonus.common.biz.constant.MaterialConstants.SEND_SUCCESS;
@ -129,7 +131,23 @@ public class ScheduledCheckWarning {
} }
System.out.println("短信发送成功: " + mobileList); System.out.println("短信发送成功: " + mobileList);
if (CollectionUtils.isNotEmpty(mobileList)){ if (CollectionUtils.isNotEmpty(mobileList)){
JSONObject sendResult = SmsTool.sendSms(mobileList, BmConfigItems.ANHUI_COMPANY_SMS_KEY); // 根据手机号及内容对sendResults进行去重处理
List<SmsParam> uniqueResults = new ArrayList<>();
// 存储已出现的手机号+内容key
Set<String> uniqueKeySet = new HashSet<>();
for (SmsParam sr : mobileList) {
// 跳过空值根据业务补充校验
if (sr == null || sr.getMobile() == null || sr.getContent() == null) {
continue;
}
String key = sr.getMobile() + "|" + sr.getContent();
// 若key未出现过加入结果列表并记录key
if (!uniqueKeySet.contains(key)) {
uniqueKeySet.add(key);
uniqueResults.add(sr);
}
}
JSONObject sendResult = SmsTool.sendSms(uniqueResults, BmConfigItems.ANHUI_COMPANY_SMS_KEY);
if (sendResult != null && !sendResult.isEmpty()) { if (sendResult != null && !sendResult.isEmpty()) {
log.info("短信发送成功: {}", sendResult); log.info("短信发送成功: {}", sendResult);
System.out.println("短信发送成功: " + sendResult); System.out.println("短信发送成功: " + sendResult);
@ -139,10 +157,26 @@ public class ScheduledCheckWarning {
} }
// 根据sendResult赋值短信发送成功与否状态 // 根据sendResult赋值短信发送成功与否状态
String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE;
sendResults.forEach(item -> item.setSendStatus(status)); // 根据手机号及内容对sendResults进行去重处理
List<SmsSendResult> results = new ArrayList<>();
// 存储已出现的手机号+内容key
Set<String> keySet = new HashSet<>();
for (SmsSendResult sr : sendResults) {
// 跳过空值根据业务补充校验
if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) {
continue;
}
String key = sr.getReceiverPhone() + "|" + sr.getContent();
// 若key未出现过加入结果列表并记录key
if (!keySet.contains(key)) {
keySet.add(key);
results.add(sr);
}
}
results.forEach(item -> item.setSendStatus(status));
//将集合结果插入数据库中 //将集合结果插入数据库中
mapper.insertSmsSendResult(sendResults); mapper.insertSmsSendResult(results);
} }
@ -172,6 +206,14 @@ public class ScheduledCheckWarning {
sendResults.add(new SmsSendResult("工器具临近检验有效期15天短信通知", item.getUserId(), item.getClzPhone(), sendResults.add(new SmsSendResult("工器具临近检验有效期15天短信通知", item.getUserId(), item.getClzPhone(),
content2, DateUtils.getNowDate())); content2, DateUtils.getNowDate()));
} }
// 获取段君强手机号
useMaintenanceWarningBean.setUserName("duanjq4515");
UseMaintenanceWarningBean info = mapper.getUserPhoneById(useMaintenanceWarningBean);
if(info.getClzPhone() != null){
mobileList2.add(new SmsParam(info.getClzPhone(), content2));
sendResults.add(new SmsSendResult("工器具临近检验有效期15天短信通知", info.getUserId(), info.getClzPhone(),
content2, DateUtils.getNowDate()));
}
} }
// 送二 // 送二
if (bean2.getDeptId() != null && bean2.getDeptId() == 102L) { if (bean2.getDeptId() != null && bean2.getDeptId() == 102L) {
@ -187,7 +229,23 @@ public class ScheduledCheckWarning {
} }
System.out.println("短信发送成功: " + mobileList2); System.out.println("短信发送成功: " + mobileList2);
if (CollectionUtils.isNotEmpty(mobileList2)){ if (CollectionUtils.isNotEmpty(mobileList2)){
JSONObject sendResult = SmsTool.sendSms(mobileList2, BmConfigItems.ANHUI_COMPANY_SMS_KEY); // 根据手机号及内容对sendResults进行去重处理
List<SmsParam> uniqueResults = new ArrayList<>();
// 存储已出现的手机号+内容key
Set<String> uniqueKeySet = new HashSet<>();
for (SmsParam sr : mobileList2) {
// 跳过空值根据业务补充校验
if (sr == null || sr.getMobile() == null || sr.getContent() == null) {
continue;
}
String key = sr.getMobile() + "|" + sr.getContent();
// 若key未出现过加入结果列表并记录key
if (!uniqueKeySet.contains(key)) {
uniqueKeySet.add(key);
uniqueResults.add(sr);
}
}
JSONObject sendResult = SmsTool.sendSms(uniqueResults, BmConfigItems.ANHUI_COMPANY_SMS_KEY);
if (sendResult != null && !sendResult.isEmpty()) { if (sendResult != null && !sendResult.isEmpty()) {
log.info("短信发送成功: {}", sendResult); log.info("短信发送成功: {}", sendResult);
System.out.println("短信发送成功: " + sendResult); System.out.println("短信发送成功: " + sendResult);
@ -197,10 +255,26 @@ public class ScheduledCheckWarning {
} }
// 根据sendResult赋值短信发送成功与否状态 // 根据sendResult赋值短信发送成功与否状态
String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE;
sendResults.forEach(item -> item.setSendStatus(status)); // 根据手机号及内容对sendResults进行去重处理
List<SmsSendResult> results = new ArrayList<>();
// 存储已出现的手机号+内容key
Set<String> keySet = new HashSet<>();
for (SmsSendResult sr : sendResults) {
// 跳过空值根据业务补充校验
if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) {
continue;
}
String key = sr.getReceiverPhone() + "|" + sr.getContent();
// 若key未出现过加入结果列表并记录key
if (!keySet.contains(key)) {
keySet.add(key);
results.add(sr);
}
}
results.forEach(item -> item.setSendStatus(status));
//将集合结果插入数据库中 //将集合结果插入数据库中
mapper.insertSmsSendResult(sendResults); mapper.insertSmsSendResult(results);
} }

View File

@ -22,7 +22,9 @@ import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE; import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE;
@ -289,10 +291,26 @@ public class WashHouseScheduledTasks {
} }
// 根据sendResult赋值短信发送成功与否状态 // 根据sendResult赋值短信发送成功与否状态
String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE;
sendResults.forEach(item -> item.setSendStatus(status)); // 根据手机号及内容对sendResults进行去重处理
List<SmsSendResult> uniqueResults = new ArrayList<>();
// 存储已出现的手机号+内容key
Set<String> uniqueKeySet = new HashSet<>();
for (SmsSendResult sr : sendResults) {
// 跳过空值根据业务补充校验
if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) {
continue;
}
String key = sr.getReceiverPhone() + "|" + sr.getContent();
// 若key未出现过加入结果列表并记录key
if (!uniqueKeySet.contains(key)) {
uniqueKeySet.add(key);
uniqueResults.add(sr);
}
}
uniqueResults.forEach(item -> item.setSendStatus(status));
//将集合结果插入数据库中 //将集合结果插入数据库中
mapper.insertSmsSendResult(sendResults); mapper.insertSmsSendResult(uniqueResults);
} else { } else {
log.info("没有待入库的单子"); log.info("没有待入库的单子");
System.out.println("没有待入库的单子"); System.out.println("没有待入库的单子");