Răsfoiți Sursa

完成MtStarUtil的唤醒和休眠相关方法

云殇忆 1 an în urmă
părinte
comite
bb53c155ce

+ 4 - 3
ruoyi-admin/src/main/resources/application.yml

@@ -27,10 +27,10 @@ captcha:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8100
   servlet:
     # 应用的访问路径
-    context-path: /
+    context-path: /szzs
   # undertow 配置
   undertow:
     # HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的
@@ -285,4 +285,5 @@ pagehelper:
 
 mtstar:
   authtoken: e0086577-cd0d-11ec-8e94-00163e046949
-  secret: c704033
+  secret: ns-7gisjjq60dlo7pe
+  url: http://wfs.mtstar.net:8783/adc/sdk/

+ 30 - 0
ruoyi-admin/src/test/java/com/ruoyi/test/WakeUpDormancyTest.java

@@ -0,0 +1,30 @@
+package com.ruoyi.test;
+
+import com.ruoyi.demo.utils.MtStarUtil;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class WakeUpDormancyTest {
+    @Autowired
+    MtStarUtil mtStarUtil;
+
+    @Test
+    public void test(){
+        String equipmentCode = "MTX0141791";
+        System.out.println(mtStarUtil.getCMark(equipmentCode));
+    }
+
+    @Test
+    public void wakeUp(){
+        String equipmentCode = "MTX0141791";
+        System.out.println(mtStarUtil.wakeup(equipmentCode));
+    }
+
+    @Test
+    public void dormancy(){
+        String equipmentCode = "MTX0141791";
+        System.out.println(mtStarUtil.dormancy(equipmentCode));
+    }
+}

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/config/MtStarProperties.java

@@ -11,6 +11,6 @@ public class MtStarProperties {
     private  String authtoken;
     @Value("${mtstar.secret}")
     private  String secret;
-
-
+    @Value("${mtstar.url}")
+    private String url;
 }

+ 103 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/utils/MtStarUtil.java

@@ -1,24 +1,122 @@
 package com.ruoyi.demo.utils;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.ruoyi.demo.config.MtStarProperties;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.ZoneOffset;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 @Component
 public class MtStarUtil {
     @Autowired
     MtStarProperties mtStarProperties;
 
-    public String sign(){
+    public String sign(long l){
         String accesSecretMd5 = SecureUtil.md5(mtStarProperties.getSecret());
-        long l = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); //10位
+        // long l = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); //10位
         String s = SecureUtil.md5(mtStarProperties.getAuthtoken() + accesSecretMd5 + l);
         return s;
     }
 
+    public String sign2(long l){
+        return SecureUtil.md5(mtStarProperties.getAuthtoken() + SecureUtil.md5(mtStarProperties.getSecret()) + l);
+    }
+
+    // 搜索,根据设备编号返回设备cMark
+    public String getCMark(String equipmentCode){
+        HashMap<String, Object> map = initMap();
+        map.put("state", 1);
+        map.put("startIndex", 0);
+        map.put("queryCount", 1);
+        map.put("select_name", equipmentCode);
+        String post = HttpUtil.post(mtStarProperties.getUrl() + "dev_get_devs_cmarks", map);
+        JSONObject obj = JSONUtil.parseObj(post);
+        if (obj.get("retCode",Integer.class) == 0){
+            List<String> list = obj.getBeanList("cMarkList", String.class);
+            if (list != null && !list.isEmpty()){
+                JSONObject entries = JSONUtil.parseObj(list.get(0));
+                return entries.get("cMark", String.class);
+            }
+
+        }
+        return "error";
+    }
+
+    public String wakeUpAndDormancy(String equipmentCode, int onoff){
+        StringBuffer callBack = new StringBuffer();
+        callBack.append(mtStarProperties.getUrl()).append("sendClientParams");
+
+        String cMark = getCMark(equipmentCode);
+        if ("error".equals(cMark))
+            return "error";
+
+        HashMap<String, Object> map = initMap();
+        map.put("paramType", 17);
+        map.put("cMarks", cMark);
+        HashMap<String, Object> sCmd = new HashMap<>();
+        sCmd.put("paramType", 17);
+        sCmd.put("onoff", onoff);
+        sCmd.put("subcmd", "ctrl_lcd_onoff_ontime");
+        map.put("params", sCmd.toString());
+        map.put("retry", 0);
+        String post = HttpUtil.post(mtStarProperties.getUrl() + "sendClientParams", map);
+        JSONObject obj = JSONUtil.parseObj(post);
+        if (0 == obj.get("retCode", Integer.class))
+            return "success";
+        return "error";
+    }
+
+    // 唤醒
+    public String wakeup(String equipmentCode){
+        if ("success".equals(wakeUpAndDormancy(equipmentCode, 1)))
+            return "成功";
+        else
+            return "失败";
+    }
+
+    // 休眠
+    public String dormancy(String equipmentCode){
+        if ("success".equals(wakeUpAndDormancy(equipmentCode, 0)))
+            return "成功";
+        else
+            return "失败";
+    }
+
+    // 初始化请求map
+    public HashMap<String, Object> initMap(){
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("access_token", mtStarProperties.getAuthtoken());
+        long l = DateUtil.currentSeconds();
+        map.put("timestamp", l);
+        map.put("sign", sign2(l));
+        return map;
+    }
+
+    // 例子
+    public String getDecive(Integer state, String selectName) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("access_token", mtStarProperties.getAuthtoken());
+        long value = DateUtil.currentSeconds();
+        map.put("timestamp", value);
+        map.put("sign", SecureUtil.md5(mtStarProperties.getAuthtoken() + SecureUtil.md5(mtStarProperties.getSecret()) + value));
+
+        map.put("state", state);
+        map.put("select_name", selectName);
+//        log.info("满天星获取设备列表 请求参数 = {}", map);
+        String post = HttpUtil.post(mtStarProperties.getUrl() + "dev_get_devs_cmarks", map);
+//        log.info("post返回 {}", post);
+        JSONObject jsonObject = JSONUtil.parseObj(post);
+        if ("0".equals(jsonObject.getStr("retCode"))) {
+            return jsonObject.getStr("cMarkList");
+        } else {
+            return null;
+        }
+    }
 }