|
@@ -1,6 +1,11 @@
|
|
|
package cn.minbb.iot.config;
|
|
|
|
|
|
+import cn.minbb.iot.model.Device;
|
|
|
import cn.minbb.iot.model.DeviceData;
|
|
|
+import cn.minbb.iot.model.User;
|
|
|
+import cn.minbb.iot.service.DeviceService;
|
|
|
+import cn.minbb.iot.service.SmsService;
|
|
|
+import cn.minbb.iot.service.UserService;
|
|
|
import cn.minbb.iot.service.WebSocketService;
|
|
|
import cn.minbb.iot.util.Application;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -49,6 +54,16 @@ public class MqttSenderConfig {
|
|
|
@Value("${spring.mqtt.completionTimeout}")
|
|
|
private int completionTimeout;
|
|
|
|
|
|
+ private SmsService smsService;
|
|
|
+ private UserService userService;
|
|
|
+ private DeviceService deviceService;
|
|
|
+
|
|
|
+ public MqttSenderConfig(SmsService smsService, UserService userService, DeviceService deviceService) {
|
|
|
+ this.smsService = smsService;
|
|
|
+ this.userService = userService;
|
|
|
+ this.deviceService = deviceService;
|
|
|
+ }
|
|
|
+
|
|
|
@Bean
|
|
|
public MqttConnectOptions getMqttConnectOptions() {
|
|
|
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
|
|
@@ -93,7 +108,8 @@ public class MqttSenderConfig {
|
|
|
public MessageProducer inbound() {
|
|
|
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(
|
|
|
clientId + "_inbound", mqttClientFactory(), defaultTopic,
|
|
|
- Const.MQTT_TOPIC_ALL, Const.MQTT_TOPIC_CAR, Const.MQTT_TOPIC_CAR_DATA);
|
|
|
+ Const.MQTT_TOPIC_ALL, Const.MQTT_TOPIC_CAR, Const.MQTT_TOPIC_CAR_DATA,
|
|
|
+ Const.MQTT_TOPIC_CAR_HEART, Const.MQTT_TOPIC_CAR_ALARM);
|
|
|
adapter.setCompletionTimeout(completionTimeout);
|
|
|
adapter.setConverter(new DefaultPahoMessageConverter());
|
|
|
adapter.setQos(1);
|
|
@@ -109,7 +125,7 @@ public class MqttSenderConfig {
|
|
|
Object object = message.getHeaders().get("mqtt_receivedTopic");
|
|
|
String topic = null != object ? object.toString() : "";
|
|
|
String msg = message.getPayload().toString();
|
|
|
- logger.info("收到消息 = 主题 = {} 信息 = {}", topic, msg);
|
|
|
+ logger.info("收到消息 / 主题 = {} 信息 = {}", topic, msg);
|
|
|
switch (topic) {
|
|
|
case Const.MQTT_TOPIC_CAR_DATA:
|
|
|
try {
|
|
@@ -127,6 +143,15 @@ public class MqttSenderConfig {
|
|
|
logger.info("非JSON格式字符串 | {}", e.getMessage());
|
|
|
}
|
|
|
break;
|
|
|
+ case Const.MQTT_TOPIC_CAR_ALARM:
|
|
|
+ Device device = deviceService.findOneBySerialNumber(msg);
|
|
|
+ if (null != device && null != device.getUserId()) {
|
|
|
+ User user = userService.findUserById(device.getUserId());
|
|
|
+ if (null != user && !user.getPhone().isEmpty()) {
|
|
|
+ smsService.sendSingleSms(user.getPhone(), user.getName(), device.getName(), Application.getCurrentStringTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
default:
|
|
|
}
|
|
|
};
|