提交 56303aa7 authored 作者: 杨启发's avatar 杨启发

发送订单状态通知短信

上级 c3348393
......@@ -74,11 +74,11 @@ public enum VehicleWarnConfigEnum {
@Getter
@AllArgsConstructor
public enum OrderWarnType {
PENDING_QUOTATION(1, "订单待报价"),
ACCEPTED(2, "订单已承接"),
COMPLETED(3, "订单完成"),
FINISHED(4, "订单完结"),
CANCELED(5, "订单取消");
PENDING_QUOTATION(0, "订单待报价"),
ACCEPTED(3, "订单已承接"),
COMPLETED(9, "订单完成"),
FINISHED(12, "订单完结"),
CANCELED(4, "订单取消");
private final Integer code;
private final String msg;
......
......@@ -345,6 +345,11 @@
<artifactId>tencentcloud-sdk-java-ocr</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>com.msl.message</groupId>
<artifactId>message-sdk</artifactId>
</dependency>
</dependencies>
......
package com.clx.performance.config;
import com.msl.common.open.ConfiguredOpenClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Objects;
@Configuration
public class ConfiguredOpenClientConfig {
@Bean
public ConfiguredOpenClient configuredOpenClient(ConfiguredOpenProperties properties) {
return new ConfiguredOpenClient(Objects.requireNonNull(properties.getGatewayUrl()),
Objects.requireNonNull(properties.getAppId()),
Objects.requireNonNull(properties.getAppKey()));
}
}
package com.clx.performance.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@ConfigurationProperties(prefix = "message")
@Getter
@Setter
@Configuration
public class ConfiguredOpenProperties {
private String gatewayUrl;
private String appId;
private String appKey;
private String accessKey;
}
......@@ -115,7 +115,8 @@ public class RabbitKeyConstants {
//同步履约进度表消息----订单部分
public static final String SYNC_PERFORMANCE_PROGRESS_FOR_ORDER_INFO_QUEUE = "clx_order.sync.performance.progress.for.order.info.queue";
//发送订单状态通知短信queue
public static final String SEND_ORDER_STATUS_NOTICE_SMS_QUEUE = "clx_order.send.order.status.notice.sms.queue";
//货单同步履约进度表queue
......
package com.clx.performance.listener;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.json.JSONUtil;
import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.config.ConfiguredOpenProperties;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.vehiclewarn.VehicleWarnUserDao;
import com.clx.performance.model.vehiclewarn.VehicleWarnUser;
import com.msl.common.open.ConfiguredOpenClient;
import com.msl.common.result.Result;
import com.msl.message.sdk.action.MessageAction;
import com.msl.message.sms.api.sms.SmsMessage;
import com.msl.message.sms.api.sms.content.SmsMessageContentImpl;
import com.msl.message.sms.api.sms.recipient.SmsMessageRecipientImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
import static com.clx.performance.enums.OrderEnum.Status.*;
import static com.msl.message.sms.api.enums.RecipientTypeEnum.USER_MOBILE;
@Slf4j
@Component
@AllArgsConstructor
public class SendOrderStatusNoticeSmsListener {
private static final Map<Integer,String> CODE_MAP = new HashMap<>();
private final ConfiguredOpenClient configuredOpenClient;
private final VehicleWarnUserDao vehicleWarnUserDao;
private final ConfiguredOpenProperties properties;
static {
CODE_MAP.put(WAIT_QUOTATION.getCode(),"orderWaitQuotation");
CODE_MAP.put(PLATFORM_UNDERTAKING.getCode(),"orderPlatformUndertaking");
CODE_MAP.put(SUCCESS.getCode(),"orderSuccess");
CODE_MAP.put(COMPLETED.getCode(),"orderCompleted");
CODE_MAP.put(CANCELED.getCode(),"orderCanceled");
}
@RabbitListener(queues = RabbitKeyConstants.SEND_ORDER_STATUS_NOTICE_SMS_QUEUE)
public void onMessage(Message message) {
try{
log.info("监听到发送订单状态通知短信,消息内容{}", new String(message.getBody()));
OrderInfoMessage order = JSONUtil.toBean(new String(message.getBody()),
new TypeReference<MqWrapper<OrderInfoMessage>>() {
},false).getData();
SmsMessage smsMessage = new SmsMessage();
//设置消息内容
SmsMessageContentImpl smsMessageContent= new SmsMessageContentImpl();
//模版code
smsMessageContent.setCode(CODE_MAP.get(order.getOrderStatus()));
//模版参数
Map<String, Object> params = new HashMap<>();
params.put("sendAddressShorter",order.getSendAddressShorter());
params.put("receiveAddressShorter",order.getReveiveAddressShorter());
params.put("orderNo",order.getOrderNo());
smsMessageContent.setParams(params);
//设置消息接收人
SmsMessageRecipientImpl smsMessageRecipient = new SmsMessageRecipientImpl();
smsMessageRecipient.setUserType(USER_MOBILE.getCode());
smsMessageRecipient.setTargets(getTargets(order.getOrderStatus()));
smsMessage.setContent(smsMessageContent);
smsMessage.setRecipient(smsMessageRecipient);
//从消息中心注册获取的通道key
smsMessage.setAccessKey(properties.getAccessKey());
//向消息中心发送消息
Result<String> result = configuredOpenClient.doAction(new MessageAction(smsMessage));
}catch (Exception e){
log.info("监听到发送订单状态通知短信发生异常,异常原因:{}", ExceptionUtils.getStackTrace(e));
}
}
private String getTargets(int code){
return vehicleWarnUserDao.listAllEnable()
.stream()
.filter(item -> JSONUtil.toList(item.getOrderWarnTypeJson(), Integer.class).contains(code))
.map(VehicleWarnUser::getMobile)
.collect(Collectors.joining(","));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论