|
|
@@ -0,0 +1,58 @@
|
|
|
+package vip.xiaonuo.common.util;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.ListUtil;
|
|
|
+import cn.hutool.core.lang.Assert;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+public class CloudApiService {
|
|
|
+
|
|
|
+
|
|
|
+ private static String xTokenHeader="x-access-token";
|
|
|
+ private static String loginUrl = "https://cloudapi.369clouds.com/api/login";
|
|
|
+ private static String sensorUrl = "https://cloudapi.369clouds.com/api/admin/getsensordata?mac={}";
|
|
|
+ private static String loginInfo="{\n" +
|
|
|
+ " \"userName\": \"wdkyzx\",\n" +
|
|
|
+ " \"password\": \"8888899999\"\n" +
|
|
|
+ "}";
|
|
|
+
|
|
|
+ public static List<Boolean> getCloudSensorData(List<String> codes){
|
|
|
+ //1.登录
|
|
|
+ String post = HttpUtil.post(loginUrl, loginInfo);
|
|
|
+ log.info("登录 url={} \nparam={} \nresult={}",loginUrl,loginInfo,post);
|
|
|
+ JSONObject loginJsonObject = JSONUtil.parseObj(post);
|
|
|
+ String token = Optional.ofNullable(loginJsonObject.getByPath("data.token")).orElse("").toString();
|
|
|
+ // 断言异常
|
|
|
+ Assert.notBlank(token,"369cloud登录失败");
|
|
|
+ //2.获取数据
|
|
|
+ List<Boolean> datas = new ArrayList<>(codes.size());
|
|
|
+ if(StrUtil.isNotBlank(token)){
|
|
|
+ for (String code : codes) {
|
|
|
+ String data = HttpUtil.createGet(StrUtil.format(sensorUrl, code)).header(xTokenHeader,token).execute().body();
|
|
|
+ log.info("获取设备数据 url={} \n param={} \nresult={}",sensorUrl,code,data);
|
|
|
+ JSONObject sensorJsonObject = JSONUtil.parseObj(data);
|
|
|
+ Map dataMap = sensorJsonObject.getByPath("data.items",Map.class);
|
|
|
+ //2=开 0=关
|
|
|
+ datas.add(MapUtil.getInt(dataMap,"LockState",0)==2);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return datas;
|
|
|
+ }
|
|
|
+
|
|
|
+// public static void main(String[] args) {
|
|
|
+// System.out.println(getCloudSensorData(ListUtil.of("29107790")));
|
|
|
+// }
|
|
|
+
|
|
|
+}
|