|
|
@@ -55,9 +55,12 @@ public class SmsHandler implements TradeOrderHandler {
|
|
|
private ConfigApi configApi;
|
|
|
|
|
|
@Override
|
|
|
- public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
|
|
|
+ public void processOrderCreateSuccess(TradeOrderDO tradeOrderDO) {
|
|
|
try {
|
|
|
- List<SmsSendconfigQueryRespVO> list = tradeOrderRepositoryService.getOrderSmsInfo(tradeOrderDO.getId(), 3);
|
|
|
+ if(tradeOrderDO.getSellMethod()==3){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<SmsSendconfigQueryRespVO> list = tradeOrderRepositoryService.getCreateOrderSmsInfo(tradeOrderDO.getId(), 0);
|
|
|
if (list.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
@@ -71,37 +74,46 @@ public class SmsHandler implements TradeOrderHandler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public String sendMsg(SmsSendconfigQueryRespVO smsSendconfigQueryRespVO) {
|
|
|
+ /***
|
|
|
+ * 转确认单发送 旅行社和直客
|
|
|
+ * 2026/3/6 17:28
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void afterProcessSuccess(TradeOrderDO tradeOrderDO) {
|
|
|
try {
|
|
|
- String telphone = "0717-6910001";
|
|
|
- if (StringUtils.isNotEmpty(smsSendconfigQueryRespVO.getSellerId())) {
|
|
|
- try {
|
|
|
- AdminUserRespDTO user = adminUserApi.getUserIgnoreTenant(Long.parseLong(smsSendconfigQueryRespVO.getSellerId()));
|
|
|
- if (StringUtils.isNotEmpty(user.getMobile())) {
|
|
|
- //如果有售票员的电话则发送售票员的电话作为咨询电话
|
|
|
- telphone = user.getMobile();
|
|
|
- } else {
|
|
|
- //读取配置文件默认参数
|
|
|
- String mtelphone = configApi.getPlatformConfigValueByKey("telphone");
|
|
|
- if (mtelphone != null) {
|
|
|
- telphone = mtelphone;
|
|
|
- }
|
|
|
+ if(tradeOrderDO.getSellMethod()==3) {
|
|
|
+ List<SmsSendconfigQueryRespVO> list = tradeOrderRepositoryService.getOrderSmsInfo(tradeOrderDO.getId(), 4);
|
|
|
+ if (list.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (SmsSendconfigQueryRespVO smsSendconfigQueryRespVO : list) {
|
|
|
+ if (smsSendconfigQueryRespVO.getMobile() != null) {
|
|
|
+ sendMsg(smsSendconfigQueryRespVO);
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("用户信息获取异常" + smsSendconfigQueryRespVO.getSellerId(), e);
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("短信发送异常", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String sendMsg(SmsSendconfigQueryRespVO smsSendconfigQueryRespVO) {
|
|
|
+ try {
|
|
|
|
|
|
String appId = smsSendconfigQueryRespVO.getApiKey();
|
|
|
String secretKey = smsSendconfigQueryRespVO.getApiSecret();
|
|
|
String signName = smsSendconfigQueryRespVO.getSignature();
|
|
|
String content = smsSendconfigQueryRespVO.getSmsParms();
|
|
|
String smsContent = smsSendconfigQueryRespVO.getSmsContent();
|
|
|
- //【1】航次名称; 【2】订单号; 【3】游玩日期; 【4】联系人;【5】购买数量; 【6】团号; 【7】旅行社联系人; 【8】联系电话;【9】航线名称;【10】产品简称;【11】咨询电话;
|
|
|
+ //【1】航次名称; 【2】订单号; 【3】游玩日期; 【4】联系人;【5】购买数量;
|
|
|
+ // 【6】团号; 【7】旅行社联系人; 【8】联系电话;【9】航线名称;【10】产品简称;【11】咨询电话;【12】游船;【13】开航时间;
|
|
|
+ // 【14】出发时间;【15】违约金;【16】补缴费;【17】小程序链接;【18】登船时间
|
|
|
content = content.replaceAll("【1】", smsSendconfigQueryRespVO.getVoyageName());
|
|
|
content = content.replaceAll("【2】", smsSendconfigQueryRespVO.getOrderNo());
|
|
|
content = content.replaceAll("【3】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
|
|
|
+ content = content.replaceAll("【3】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
|
|
|
+ content = content.replaceAll("【13】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
|
|
|
content = content.replaceAll("【4】", smsSendconfigQueryRespVO.getContactName());
|
|
|
content = content.replaceAll("【5】", smsSendconfigQueryRespVO.getNum() + "");
|
|
|
content = content.replaceAll("【6】", smsSendconfigQueryRespVO.getGroupNo());
|
|
|
@@ -109,19 +121,20 @@ public class SmsHandler implements TradeOrderHandler {
|
|
|
content = content.replaceAll("【8】", smsSendconfigQueryRespVO.getMobile());
|
|
|
content = content.replaceAll("【9】", smsSendconfigQueryRespVO.getShipName());
|
|
|
content = content.replaceAll("【10】", smsSendconfigQueryRespVO.getShortName());
|
|
|
- content = content.replaceAll("【11】", telphone);
|
|
|
+ content = content.replaceAll("【14】", smsSendconfigQueryRespVO.getLeaveTime().substring(0, 10));
|
|
|
+ content = content.replaceAll("【18】", smsSendconfigQueryRespVO.getLeaveTime().substring(0, 10));
|
|
|
|
|
|
Pattern pattern = Pattern.compile("\\【(.*?)\\】");
|
|
|
Matcher matcher = pattern.matcher(smsContent);
|
|
|
List<String> list = new ArrayList<>();
|
|
|
while (matcher.find()) {
|
|
|
- String result = smsContent.substring(matcher.start() + 1, matcher.end() - 1); // 获取第一个匹配的括号内的内容
|
|
|
+ String result = smsContent.substring(matcher.start() + 1, matcher.end() - 1);
|
|
|
list.add(result);
|
|
|
}
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
List<String> parmlist = JSONUtil.toList(content, String.class);
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
- jsonObject.put(list.get(i), parmlist.get(i));
|
|
|
+ jsonObject.set(list.get(i), parmlist.get(i));
|
|
|
}
|
|
|
String mobile = smsSendconfigQueryRespVO.getMobile();
|
|
|
log.error("[下单成功短信发送参数]:" + smsSendconfigQueryRespVO.getApiTemplateId() + ";" + mobile + ";" + jsonObject.toString());
|
|
|
@@ -172,121 +185,6 @@ public class SmsHandler implements TradeOrderHandler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public String sendMsg3(SmsSendconfigQueryRespVO smsSendconfigQueryRespVO) {
|
|
|
- try {
|
|
|
- String telphone = "0717-6910001";
|
|
|
- if (StringUtils.isNotEmpty(smsSendconfigQueryRespVO.getSellerId())) {
|
|
|
- try {
|
|
|
- AdminUserRespDTO user = adminUserApi.getUserIgnoreTenant(Long.parseLong(smsSendconfigQueryRespVO.getSellerId()));
|
|
|
- if (StringUtils.isNotEmpty(user.getMobile())) {
|
|
|
- //如果有售票员的电话则发送售票员的电话作为咨询电话
|
|
|
- telphone = user.getMobile();
|
|
|
- } else {
|
|
|
- //读取配置文件默认参数
|
|
|
- String mtelphone = configApi.getPlatformConfigValueByKey("telphone");
|
|
|
- if (mtelphone != null) {
|
|
|
- telphone = mtelphone;
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("用户信息获取异常" + smsSendconfigQueryRespVO.getSellerId(), e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //sxly
|
|
|
- String appId = smsSendconfigQueryRespVO.getApiKey();
|
|
|
- //Sx@202305
|
|
|
- String secretKey = smsSendconfigQueryRespVO.getApiSecret();
|
|
|
- //https://112.35.10.201:58888/sms/tmpsubmit
|
|
|
- String url = smsSendconfigQueryRespVO.getApiUrl();
|
|
|
- //jFKNw6Cis
|
|
|
- String signName = smsSendconfigQueryRespVO.getSignature();
|
|
|
- String content = smsSendconfigQueryRespVO.getSmsParms();
|
|
|
- //【1】产品名称; 【2】订单号; 【3】游玩日期; 【4】联系人;【5】购买数量; 【6】团名称; 【7】旅行社联系人; 【8】联系电话;【9】时间方案名称;【10】产品简称; 【11】咨询电话;
|
|
|
- content = content.replaceAll("【1】", smsSendconfigQueryRespVO.getProductName().substring(0, 10).replace("【", "").replace("】", "").replace("-", ""));
|
|
|
- content = content.replaceAll("【2】", smsSendconfigQueryRespVO.getOrderNo());
|
|
|
- content = content.replaceAll("【3】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
|
|
|
- content = content.replaceAll("【4】", smsSendconfigQueryRespVO.getContactName());
|
|
|
- content = content.replaceAll("【5】", smsSendconfigQueryRespVO.getNum() + "");
|
|
|
- content = content.replaceAll("【6】", smsSendconfigQueryRespVO.getSourceName());
|
|
|
- content = content.replaceAll("【7】", smsSendconfigQueryRespVO.getContactName());
|
|
|
- content = content.replaceAll("【8】", smsSendconfigQueryRespVO.getMobile());
|
|
|
- content = content.replaceAll("【9】", smsSendconfigQueryRespVO.getRouteName());
|
|
|
- content = content.replaceAll("【10】", smsSendconfigQueryRespVO.getShortName());
|
|
|
- content = content.replaceAll("【11】", telphone);
|
|
|
- JSONArray parts = JSONUtil.parseArray(content);
|
|
|
- JSONArray templates = JSONUtil.parseArray(smsSendconfigQueryRespVO.getTemplateParams());
|
|
|
- Map map = new HashMap<>();
|
|
|
- for (int i = 0; i < templates.size(); i++) {
|
|
|
- String key = templates.getStr(i);
|
|
|
- String value = parts.getStr(i);
|
|
|
- map.put(key, value);
|
|
|
- }
|
|
|
- String content1 = "【三峡旅游】" + StrUtil.format(smsSendconfigQueryRespVO.getSmsContent(), map);
|
|
|
- String mobile = smsSendconfigQueryRespVO.getMobile();
|
|
|
- log.error("[下单成功短信发送参数]:" + content1 + ";手机号:" + mobile);
|
|
|
- String params = SmsUtil.generateParams2(
|
|
|
- String.join(",", mobile), content1, null, null, null
|
|
|
- );
|
|
|
- // 生成时间戳和token
|
|
|
- String timeStamp = String.valueOf(System.currentTimeMillis());
|
|
|
- String original = appId + timeStamp + secretKey;
|
|
|
- String token = md5(original).toLowerCase();
|
|
|
- // 构造请求头参数
|
|
|
- Map<String, String> headers = new HashMap<>();
|
|
|
- headers.put("userId", appId);
|
|
|
- headers.put("timeStamp", timeStamp);
|
|
|
- headers.put("token", token);
|
|
|
- log.error("[下单成功短信发送参数]:" + url + ";" + params);
|
|
|
- String result = sendPost(url, params, headers);
|
|
|
- log.error("[下单成功短信返回参数]:" + result);
|
|
|
-
|
|
|
- // 检查返回结果是否为有效的JSON格式
|
|
|
- SmsBatchSendRespDTO response = null;
|
|
|
- if (result != null && result.trim().startsWith("{")) {
|
|
|
- try {
|
|
|
- response = JSONUtil.toBean(result, SmsBatchSendRespDTO.class);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("短信接口返回JSON解析失败,原始响应内容: {}", result, e);
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.error("短信接口返回非JSON格式响应,原始响应内容: {}", result);
|
|
|
- }
|
|
|
-
|
|
|
- if (response != null && response.getCode() != null && response.getCode() == 0) {
|
|
|
- log.error("[下单成功短信发送成功]:" + mobile);
|
|
|
- SmsSendLogDTO reqDTO = new SmsSendLogDTO();
|
|
|
- reqDTO.setId(IdWorker.getId());
|
|
|
- reqDTO.setTenantId(smsSendconfigQueryRespVO.getTenantId());
|
|
|
- reqDTO.setMobile(mobile);
|
|
|
- reqDTO.setSmsConfigId(mobile);
|
|
|
- reqDTO.setOrderNo(smsSendconfigQueryRespVO.getOrderNo());
|
|
|
- reqDTO.setSmsConfigId(smsSendconfigQueryRespVO.getId() + "");
|
|
|
- reqDTO.setResult(result);
|
|
|
- if (result != null && result.indexOf("success") != -1) {
|
|
|
- reqDTO.setStatus(1);
|
|
|
- } else {
|
|
|
- reqDTO.setStatus(0);
|
|
|
- }
|
|
|
- reqDTO.setSmsContent(content1);
|
|
|
- tradeOrderRepositoryService.insertSmsLog(reqDTO);
|
|
|
- return "发送成功";
|
|
|
- } else {
|
|
|
- String errorMsg = "短信发送失败";
|
|
|
- if (response != null && response.getMsg() != null) {
|
|
|
- errorMsg += ": " + response.getMsg();
|
|
|
- } else if (result != null) {
|
|
|
- errorMsg += ",原始响应: " + result;
|
|
|
- }
|
|
|
- return errorMsg;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("[下单成功短信发送失败]:" + e.getMessage());
|
|
|
- return "短信发送失败: " + e.getMessage();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private String md5(String input) {
|
|
|
try {
|
|
|
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
|