perf: 优化短信发送有异常继续发送,最后合并返回错误

dev
huangfeng 7 days ago
parent e6073cc4e0
commit 638f97317a

@ -32,19 +32,15 @@ public class SmsAdapter {
@Resource
LwwlkjWeb lwwlkjWeb;
public void sendSms(Integer type, List<String> iccidList, String content) {
String net = "";
try {
public void sendSms(Integer type, List<String> iccidList, String content, List<String> errList) {
if (Constants.NetType_Dahan.equals(type)) {
net = "dahan";
dahanWeb.sendSms(iccidList, content);
dahanWeb.sendSms(iccidList, content, errList);
} else if (Constants.NetType_Rabchaser.equals(type)) {
net = "rabchaser";
List<String> list = new ArrayList<>();
for (String iccid : iccidList) {
list.add(iccid);
if (list.size() > 9) {
rabchaserApi.sendSms(list, content);
rabchaserApi.sendSms(list, content, errList);
list.clear();
try {
Thread.sleep(500);
@ -53,17 +49,12 @@ public class SmsAdapter {
}
}
if (list.size() > 0) {
rabchaserApi.sendSms(list, content);
rabchaserApi.sendSms(list, content, errList);
}
} else if (Constants.NetType_M2M10086.equals(type)) {
net = "m2m10086";
m2m10086Web.sendSms(iccidList, content);
m2m10086Web.sendSms(iccidList, content, errList);
} else if (Constants.NetType_LWWLKJ.equals(type)) {
net = "lwwlkj";
lwwlkjWeb.sendSms(iccidList, content);
}
} catch (ApiException e) {
throw new ApiException(net + e.getMessage());
lwwlkjWeb.sendSms(iccidList, content, errList);
}
}

@ -65,7 +65,7 @@ public class DahanWeb {
}
}
public void sendSms(List<String> iccidList, String content) {
public void sendSms(List<String> iccidList, String content, List<String> errList) {
String url = "/cardSendMt";
try {
for (String iccid : iccidList) {
@ -79,20 +79,20 @@ public class DahanWeb {
try {
result = JSONUtil.json2Object(json, HashMap.class);
} catch (Exception e) {
throw new ApiException(json);
errList.add(json);
return;
}
if (result.get("code") != null && "200".equalsIgnoreCase(result.get("code").toString())) {
} else {
String error = String.valueOf(result.get("message"));
throw new ApiException(error);
String err = iccid + result.get("message");
errList.add(err);
}
}
} catch (ApiException e) {
throw e;
} catch (Exception e) {
log.error("发送短信异常.", e);
throw new ApiException("发送短信异常," + e.getMessage());
String err = "dahan发送短信异常," + e.getMessage();
errList.add(err);
}
}

@ -55,7 +55,7 @@ public class LwwlkjWeb {
}
}
public void sendSms(List<String> msisdnList, String content) {
public void sendSms(List<String> msisdnList, String content, List<String> errList) {
String url = "/message/send";
try {
String msisdns = msisdnList.stream().collect(Collectors.joining(","));
@ -69,18 +69,18 @@ public class LwwlkjWeb {
try {
result = JSONUtil.json2Object(json, HashMap.class);
} catch (Exception e) {
throw new ApiException(json);
errList.add(json);
return;
}
if (result.get("code") != null && "success".equalsIgnoreCase(result.get("code").toString())) {
} else {
throw new ApiException(json);
errList.add(json);
}
} catch (ApiException e) {
throw e;
} catch (Exception e) {
log.error("发送短信异常.", e);
throw new ApiException("发送短信异常," + e.getMessage());
String err = "lwwlkj发送短信异常," + e.getMessage();
errList.add(err);
}
}

@ -68,7 +68,7 @@ public class M2m10086Web {
}
}
public void sendSms(List<String> iccidList, String content) {
public void sendSms(List<String> iccidList, String content, List<String> errList) {
String url = "/sms/smsRecord/saveSmsRecord";
try {
for (String iccid : iccidList) {
@ -84,20 +84,20 @@ public class M2m10086Web {
try {
result = JSONUtil.json2Object(json, HashMap.class);
} catch (Exception e) {
throw new ApiException(json);
errList.add(json);
return;
}
if (result.get("code") != null && "0".equalsIgnoreCase(result.get("code").toString())) {
} else {
String error = String.valueOf(result.get("message"));
throw new ApiException(error);
String err = iccid + result.get("message");
errList.add(err);
}
}
} catch (ApiException e) {
throw e;
} catch (Exception e) {
log.error("发送短信异常.", e);
throw new ApiException("发送短信异常," + e.getMessage());
String err = "m2m10086发送短信异常," + e.getMessage();
errList.add(err);
}
}

@ -34,7 +34,7 @@ public class RabchaserApi {
return map;
}
public void sendSms(List<String> iccidList, String content) {
public void sendSms(List<String> iccidList, String content, List<String> errList) {
String url = "/simCards/sendSms";
try {
Map<String, String> headMap = this.signHead(url);
@ -45,16 +45,17 @@ public class RabchaserApi {
String json = HttpClient.post(baseUrl + url, dataMap, headMap);
log.info("发送短信完成:" + json);
List<Map> list = JSONUtil.json2Object(json, List.class);
Map map = list.get(0);
for (Map map : list) {
String code = map.get("code").toString();
if (!"0".equals(code)) {
throw new ApiException(map.get("message").toString());
String err = map.get("iccid").toString() + map.get("message").toString();
errList.add(err);
}
}
} catch (ApiException e) {
throw e;
} catch (Exception e) {
log.error("发送短信异常.", e);
throw new ApiException("发送短信异常," + e.getMessage());
String err = "rabchaser发送短信异常," + e.getMessage();
errList.add(err);
}
}

@ -42,17 +42,21 @@ public class SmsServiceImpl implements SmsService {
this.buildiccidList(dahanList, rabchaserList, m2mList, lkjList,
model.getTermIdList());
List<String> errList = new ArrayList<>();
if (!CollectionUtils.isEmpty(dahanList)) {
smsAdapter.sendSms(Constants.NetType_Dahan, dahanList, model.getContent());
smsAdapter.sendSms(Constants.NetType_Dahan, dahanList, model.getContent(), errList);
}
if (!CollectionUtils.isEmpty(rabchaserList)) {
smsAdapter.sendSms(Constants.NetType_Rabchaser, rabchaserList, model.getContent());
smsAdapter.sendSms(Constants.NetType_Rabchaser, rabchaserList, model.getContent(), errList);
}
if (!CollectionUtils.isEmpty(m2mList)) {
smsAdapter.sendSms(Constants.NetType_M2M10086, m2mList, model.getContent());
smsAdapter.sendSms(Constants.NetType_M2M10086, m2mList, model.getContent(), errList);
}
if (!CollectionUtils.isEmpty(lkjList)) {
smsAdapter.sendSms(Constants.NetType_LWWLKJ, lkjList, model.getContent());
smsAdapter.sendSms(Constants.NetType_LWWLKJ, lkjList, model.getContent(), errList);
}
if (errList.size() > 0) {
throw new ApiException(String.join("\r\n", errList));
}
}

Loading…
Cancel
Save