|
|
@@ -7,7 +7,6 @@ import com.github.microservice.http.APIResponseModel;
|
|
|
import com.github.microservice.models.hxz.base.IotBaseResult;
|
|
|
import com.github.microservice.net.ResultContent;
|
|
|
import com.github.microservice.types.FunctionType;
|
|
|
-import com.google.gson.JsonObject;
|
|
|
import com.zhongshu.iot.client.model.artemis.OperationMessageModel;
|
|
|
import com.zhongshu.iot.client.model.artemis.OperationMessageResultModel;
|
|
|
import com.zhongshu.iot.client.model.artemis.OperationMessageResultSearch;
|
|
|
@@ -36,7 +35,6 @@ import com.zhongshu.iot.server.core.util.CommonUtil;
|
|
|
import com.zhongshu.iot.server.core.util.DateUtils;
|
|
|
import com.zhongshu.iot.server.core.util.TokenUtil;
|
|
|
import com.zhongshu.iot.server.core.util.bean.BeanUtils;
|
|
|
-import com.zhongshu.iot.server.core.util.mqtt.MqttTopicUtils;
|
|
|
import com.zhongshu.iot.server.core.util.mqtt.mqttConfig.client.MQClient;
|
|
|
import com.zhongshu.iot.server.core.util.page.PageEntityUtil;
|
|
|
import jakarta.jms.Message;
|
|
|
@@ -131,57 +129,6 @@ public class OperationMessageService {
|
|
|
return ResultContent.buildSuccess(msg);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 给设备下发指令
|
|
|
- *
|
|
|
- * @param deviceId 设备ID
|
|
|
- * @param command 指令,如:on,off
|
|
|
- * @param data 指令数据
|
|
|
- * @return
|
|
|
- */
|
|
|
- public ResultContent sendMessage(String deviceId, String command, JSONObject data) {
|
|
|
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(deviceId);
|
|
|
- if (ObjectUtils.isEmpty(deviceInfo)) {
|
|
|
- return ResultContent.buildFail(String.format("设备不存在:%s", deviceId));
|
|
|
- }
|
|
|
- try {
|
|
|
- // 消息的TTL时间
|
|
|
- Long ttl = 10 * 1000L;
|
|
|
- // 消息的ID
|
|
|
- String messageId = "";
|
|
|
- OperationMessage message = new OperationMessage();
|
|
|
- if (data.containsKey("messageId")) {
|
|
|
- messageId = data.getStr("messageId");
|
|
|
- } else {
|
|
|
- messageId = UUID.randomUUID().toString();
|
|
|
- data.append("messageId", messageId);
|
|
|
- }
|
|
|
- String topic = MqttTopicUtils.buildDeviceOperationInstructionsTopic(deviceId, command);
|
|
|
-
|
|
|
- message.setMessageId(messageId);
|
|
|
- message.setData(data);
|
|
|
- message.setTopic(topic);
|
|
|
- message.setDeviceId(deviceId);
|
|
|
- message.setDeviceInfo(deviceInfo);
|
|
|
- message.setIsReceive(Boolean.FALSE);
|
|
|
- message.setTtlTime(ttl);
|
|
|
- message.setTime(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
|
|
|
-
|
|
|
- JsonObject jsonObject = new JsonObject();
|
|
|
- jsonObject.addProperty("id", messageId);
|
|
|
- jsonObject.addProperty("data", data.toString());
|
|
|
- jsonObject.addProperty("time", System.currentTimeMillis());
|
|
|
- jsonObject.addProperty("ttl", ttl);
|
|
|
- mqClient.sendObject(topic, jsonObject.toString());
|
|
|
- log.info("mqtt msg 发送成功");
|
|
|
-
|
|
|
- operationMessageDao.save(message);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return ResultContent.buildSuccess();
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* /v1/gateway/#
|
|
|
* 处理网关MQTT信息
|
|
|
@@ -227,6 +174,7 @@ public class OperationMessageService {
|
|
|
}
|
|
|
|
|
|
String id = jsonObject.getStr("id");
|
|
|
+ String responseId = jsonObject.getStr("responseId");
|
|
|
Long time = jsonObject.getLong("time");
|
|
|
Long ttl = jsonObject.getLong("ttl");
|
|
|
String event = jsonObject.getStr("event");
|
|
|
@@ -275,6 +223,7 @@ public class OperationMessageService {
|
|
|
if (ObjectUtils.isNotEmpty(deviceId)) {
|
|
|
operationMessage.setDeviceId(deviceId);
|
|
|
}
|
|
|
+ operationMessage.setForResponseId(responseId);
|
|
|
initAddOperationMessage(operationMessage);
|
|
|
} catch (Exception e) {
|
|
|
log.error("消息出错了: {}", msg);
|
|
|
@@ -482,6 +431,15 @@ public class OperationMessageService {
|
|
|
OperationMessageResult messageResult = new OperationMessageResult();
|
|
|
messageResult.setOperationMessage(entity);
|
|
|
messageResult.setData(data);
|
|
|
+ String forResponseId = entity.getForResponseId();
|
|
|
+ messageResult.setForResponseId(forResponseId);
|
|
|
+ if (StringUtils.isNotEmpty(forResponseId)) {
|
|
|
+ OperationMessageResult responseMessage = operationMessageResultDao.findTopByResponseId(forResponseId);
|
|
|
+ if (ObjectUtils.isNotEmpty(responseMessage)) {
|
|
|
+ responseMessage.setResponseData(data);
|
|
|
+ operationMessageResultDao.save(responseMessage);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// OperationMessageResult 组装 IotMain 的信息
|
|
|
buildOperationMessageResultIotInfo(messageResult, iotMain);
|