From ab51b6b68ff47c82337dddb9beae334bc28007c4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 22 八月 2024 17:48:18 +0800
Subject: [PATCH] 硬件消息

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java                |    4 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/ServiceIdConstant.java        |    9 +++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java |   25 +++++++-
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java           |   42 ++++++++++++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java   |   48 +++++++++++++++
 5 files changed, 122 insertions(+), 6 deletions(-)

diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
index 01a297d..27e04ad 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java
@@ -12,11 +12,11 @@
 public class IotDAConfig {
 
     /**
-     * ak配置
+     * ak配置  SSD4HKIJPFO68W8QFSNG
      */
     private String ak;
     /**
-     * sk配置
+     * sk配置  8Obp0fPsyFQ3bQUIaO2kKrS3XVPMOlXZ1nqPgK2k
      */
     private String sk;
     /**
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/ServiceIdConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/ServiceIdConstant.java
new file mode 100644
index 0000000..d4515f1
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/ServiceIdConstant.java
@@ -0,0 +1,9 @@
+package com.ruoyi.integration.iotda.constant;
+
+public class ServiceIdConstant {
+    /**
+     * 登录认证应答
+     */
+    public static final String ONLINE_REPLY = "online_reply";
+
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
index 9b0d3b1..22bb005 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -1,13 +1,32 @@
 package com.ruoyi.integration.iotda.utils.listener;
 
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
 
 /**
  * iotda消息监听
  */
 @Slf4j
-@Component
+@RestController
 public class IotMessageListener {
-    
+
+
+    /**
+     * 设备消息监听
+     * @param jsonObject
+     * @return
+     * @throws IOException
+     */
+    @PostMapping(value = "/message")
+    public AjaxResult<Integer> add(@RequestBody JSONObject jsonObject) throws IOException {
+        System.err.println(jsonObject);
+        return AjaxResult.success();
+    }
+
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
index 6e386cb..439572a 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java
@@ -1,6 +1,17 @@
 package com.ruoyi.integration.iotda.utils.produce;
 
+import com.huaweicloud.sdk.core.exception.ConnectionException;
+import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
+import com.huaweicloud.sdk.core.exception.ServiceResponseException;
+import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
+import com.huaweicloud.sdk.iotda.v5.model.CreateMessageRequest;
+import com.huaweicloud.sdk.iotda.v5.model.CreateMessageResponse;
+import com.huaweicloud.sdk.iotda.v5.model.DeviceMessageRequest;
+import com.ruoyi.common.core.utils.uuid.UUID;
+import com.ruoyi.integration.iotda.builder.IotBuilder;
+import com.ruoyi.integration.iotda.config.IotDAConfig;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 /**
@@ -9,5 +20,40 @@
 @Slf4j
 @Component
 public class IotMessageProduce {
-    
+
+    @Autowired
+    private IotBuilder iotBuilder;
+
+    /**
+     * 设备消息下发
+     * @param deviceId 设备id
+     * @param name 消息名称
+     * @param message 消息内容
+     * @return
+     */
+    public String sendMessage(String deviceId,String name,String message){
+        CreateMessageRequest request = new CreateMessageRequest();
+        request.withDeviceId(deviceId);
+        DeviceMessageRequest body = new DeviceMessageRequest();
+        body.withMessageId(UUID.randomUUID().toString());
+        body.withName(name);
+        body.withMessage(message);
+        request.withBody(body);
+        try {
+            CreateMessageResponse response = iotBuilder.buildIot().createMessage(request);
+            System.out.println(response.toString());
+        } catch (ConnectionException e) {
+            e.printStackTrace();
+        } catch (RequestTimeoutException e) {
+            e.printStackTrace();
+        } catch (ServiceResponseException e) {
+            e.printStackTrace();
+            System.out.println(e.getHttpStatusCode());
+            System.out.println(e.getRequestId());
+            System.out.println(e.getErrorCode());
+            System.out.println(e.getErrorMsg());
+        }
+        return null;
+    }
+
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
new file mode 100644
index 0000000..bd5dc8f
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
@@ -0,0 +1,42 @@
+package com.ruoyi.integration.iotda.utils.tools;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.integration.iotda.constant.ServiceIdConstant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MessageUtil {
+
+    /**
+     * 登录认证应答
+     * @param charging_pile_code  桩编码
+     * @param online_result 登录结果(0:成功,1:失败)
+     * @return
+     */
+    public static String onlineReply(String charging_pile_code,Integer online_result){
+        Map<String,Object> map = new HashMap<>(3);
+        map.put("service_id", ServiceIdConstant.ONLINE_REPLY);
+        map.put("charging_pile_code",charging_pile_code);
+        map.put("online_result",online_result);
+        return JSONObject.toJSONString(map);
+    }
+
+    /**
+     * 心跳包应答
+     * @param charging_pile_code 桩编码
+     * @param charging_gun_code 枪号
+     * @param charging_gun_status 心跳应答(0)
+     * @return
+     */
+    public static String pong(String charging_pile_code,String charging_gun_code,Integer charging_gun_status){
+        Map<String,Object> map = new HashMap<>(3);
+        map.put("service_id", ServiceIdConstant.ONLINE_REPLY);
+        map.put("charging_pile_code",charging_pile_code);
+        map.put("charging_gun_code",charging_gun_code);
+        map.put("charging_gun_status",charging_gun_status);
+        return JSONObject.toJSONString(map);
+    }
+
+}

--
Gitblit v1.7.1