From 43fb2ac961d450659a270f1db9053ec545327aa1 Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期四, 09 十二月 2021 15:37:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 100 insertions(+), 0 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java
new file mode 100644
index 0000000..617cfb2
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java
@@ -0,0 +1,100 @@
+package com.sandu.ximon.admin.manager.iot.rrpc.mainboard;
+
+import com.alibaba.fastjson.JSON;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.iot.model.v20180120.InvokeThingServiceResponse;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.ximon.admin.manager.iot.amqp.MqttMainBoardConfig;
+import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.BaseInvokeSyncService;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.InvokeParam;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils;
+import org.springframework.beans.BeanUtils;
+
+import java.util.Map;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/3 11:31
+ * 涓绘澘rrpc閫氫俊瀹炵幇绫�
+ */
+public class MainBoardInvokeSyncService extends BaseInvokeSyncService {
+    private static volatile DefaultAcsClient client = null;
+
+    private final static String PRODUCT_KEY = "a1JsfPG4iKW";
+
+    @Override
+    public String getProductKey() {
+        return PRODUCT_KEY;
+    }
+
+    @Override
+    public CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame) {
+        InvokeParam param = new InvokeParam();
+        param.setOperate("1001");
+        param.setFrame(iRequestFrame.getEncodeFrame());
+        InvokeThingServiceResponse.Data data = invokeThing(deviceName, param);
+        if (data == null) {
+            return null;
+        }
+        String result = data.getResult();
+        result = result.replace("\\", "");
+        Map map = JSON.parseObject(result, Map.class);
+        result = (String) map.get("msg");
+        CommonFrame connectFrame = FrameUtils.transformMessageToFrame(result);
+        return connectFrame;
+    }
+
+    @Override
+    public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz) {
+        CommonFrame commonFrame = sendRRPC(deviceName, iRequestFrame);
+        if (commonFrame == null) {
+            throw new BusinessException("rrpc璇锋眰澶辫触");
+        }
+        WrapResponseCommonFrame<T> responseCommonFrame = new WrapResponseCommonFrame<>();
+        BeanUtils.copyProperties(commonFrame, responseCommonFrame);
+        try {
+            responseCommonFrame.setResponseInnerFrame(clz.newInstance().transformFrame(responseCommonFrame.getPayload()));
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new BusinessException(String.format("鎵句笉鍒�%s鐨勬瀯閫犲嚱鏁�", clz.getName()));
+        }
+        return responseCommonFrame;
+    }
+
+    public static void main(String[] args) {
+        String s = "FEA581000BFE010003FFFF004597147735AB2D28";
+        System.out.println(FrameUtils.decodeReportMessage(s));
+    }
+
+    private static class SingletonClassInstance {
+        private static final MainBoardInvokeSyncService INSTANCE = new MainBoardInvokeSyncService();
+    }
+
+    private MainBoardInvokeSyncService() {
+    }
+
+    public static MainBoardInvokeSyncService getInstance() {
+        return SingletonClassInstance.INSTANCE;
+    }
+
+    @Override
+    public DefaultAcsClient getClient() {
+        if (client == null) {
+            synchronized (MainBoardInvokeSyncService.class) {
+                if (client == null) {
+                    IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", MqttMainBoardConfig.ACCESS_KEY, MqttMainBoardConfig.ACCESS_SECRET);
+                    DefaultProfile.addEndpoint("cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
+                    client = new DefaultAcsClient(profile);
+                }
+            }
+        }
+        return client;
+    }
+
+
+}

--
Gitblit v1.9.3