提交 60d017fb authored 作者: 艾庆国's avatar 艾庆国

线路预警

上级 158c6f97
......@@ -29,4 +29,11 @@ public class ClxMessageConfig {
//转账支付-还款单短信模板
private String repaymentTemplateCode;
//车辆报警短信模板
private String vehicleWarnTemplateCode;
//车辆报警渠道id
private Integer vehicleWarnChannelId;
//线路报警短信模板
private String lineWarnTemplateCode;
}
package com.clx.performance.service.impl.linewarn;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.clx.message.feign.ClxMessageOpenapiFeign;
import com.clx.message.req.message.AliSmsMessageReq;
import com.clx.message.req.message.ClinkMessageReq;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.config.ClxMessageConfig;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.linewarn.LineWarnInfoDao;
import com.clx.performance.dao.linewarn.LineWarnOrderGoodsDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao;
import com.clx.performance.dto.linewarn.LineWarnCommonInfoDTO;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.linewarn.LineWarnInfo;
import com.clx.performance.model.linewarn.LineWarnOrderGoods;
import com.clx.performance.model.vehiclewarn.VehicleWarnUser;
import com.clx.performance.param.mq.linewarn.LineWarnLineWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
......@@ -23,6 +33,8 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
......@@ -32,6 +44,8 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
private static final int DEFAULT_LOAD_UNLOAD_TIME = 60;
private static final int DEFAULT_LOAD_UNLOAD_DAY = 7;
@Autowired
private ClxMessageConfig clxMessageConfig;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
......@@ -58,7 +72,12 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
private LineWarnLineWarnService lineWarnLineWarnService;
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private LineWarnInfoDao lineWarnInfoDao;
@Autowired
private VehicleWarnUserDao vehicleWarnUserDao;
@Autowired
private ClxMessageOpenapiFeign clxMessageOpenapiFeign;
@Override
......@@ -155,6 +174,85 @@ public class LineWarnMqHandlerServiceImpl implements LineWarnMqHandlerService {
@Override
public void notice(LineWarnNoticeMqParam mq) {
LineWarnInfo vehicleWarnInfo = lineWarnInfoDao
.findById(mq.getInfoId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
List<String> mobileList = new ArrayList<>();
// 过滤需要通知的人员
List<VehicleWarnUser> list = vehicleWarnUserDao.listAllEnable();
for (VehicleWarnUser item : list) {
List<Integer> warnTypeList = JSON.parseArray(item.getLineWarnTypeJson(),Integer.class);
if (warnTypeList.contains(vehicleWarnInfo.getWarnType())){
mobileList.add(item.getMobile());
}
}
if (mobileList.isEmpty()) {return;}
log.info("线路预警通知, id:{}, mobileList:{}", vehicleWarnInfo.getId(), JSON.toJSONString(mobileList));
if (vehicleWarnInfo.getWarnLevel() == 2){ //2级短信
sendSms(mobileList, vehicleWarnInfo.getWarnName()
, vehicleWarnInfo.getOrderGoodsNo());
}
else if (vehicleWarnInfo.getWarnLevel() == 3) { //3级外呼+短信
sendSms(mobileList, vehicleWarnInfo.getWarnName()
, vehicleWarnInfo.getOrderGoodsNo());
sendClink(mobileList, vehicleWarnInfo.getWarnName()
, vehicleWarnInfo.getOrderGoodsNo());
}
}
/**
* 发送预警短信
*/
@Override
public void sendSms(List<String> mobileList, String warnName, String orderGoodsNo) {
//触发${warnName}预警;货单${orderGoodsNo};请尽快核实情况。
AliSmsMessageReq req = new AliSmsMessageReq();
req.setTemplateCode(clxMessageConfig.getLineWarnTemplateCode());
JSONObject jsonObject = new JSONObject();
jsonObject.set("warnName", warnName);
jsonObject.set("orderGoodsNo", orderGoodsNo);
req.setChannelId(clxMessageConfig.getChannelId());
req.setAppId(clxMessageConfig.getAppId().toString());
req.setContent(jsonObject.toString());
req.setExpire(300L);
for (String mobile : mobileList) {
req.setMobile(mobile);
clxMessageOpenapiFeign.sendAliSms(req);
}
}
/**
* 发送预警外呼
*/
@Override
public void sendClink(List<String> mobileList, String warnName, String orderGoodsNo) {
//触发${warnName}预警;货单${orderGoodsNo};请尽快核实情况。
ClinkMessageReq req = new ClinkMessageReq();
StringBuilder sb = new StringBuilder();
sb.append("触发");
sb.append(warnName);
sb.append("预警;货单");
sb.append(orderGoodsNo);
sb.append(";请尽快核实情况");
String content = sb.toString();
req.setChannelId(clxMessageConfig.getVehicleWarnChannelId());
req.setAppId(clxMessageConfig.getAppId().toString());
req.setContent(content);
for (String mobile : mobileList) {
req.setMobile(mobile);
clxMessageOpenapiFeign.sendClink(req);
}
}
......
......@@ -5,6 +5,8 @@ import com.clx.performance.param.mq.linewarn.LineWarnNoticeMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderChildWarnMqParam;
import com.clx.performance.param.mq.linewarn.LineWarnOrderGoodsAddMqParam;
import java.util.List;
public interface LineWarnMqHandlerService {
void orderGoodsAdd(LineWarnOrderGoodsAddMqParam mq);
......@@ -13,5 +15,9 @@ public interface LineWarnMqHandlerService {
void notice(LineWarnNoticeMqParam mq);
void sendSms(List<String> mobileList, String warnName, String orderGoodsNo);
void sendClink(List<String> mobileList, String warnName, String orderGoodsNo);
void orderChildWarn(LineWarnOrderChildWarnMqParam mq);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论