Selaa lähdekoodia

feat:“添加MQTT的API接口"

soobin 10 kuukautta sitten
vanhempi
commit
f29a7bedba

+ 39 - 0
src/main/java/com/szwl/controller/MqttController.java

@@ -8,17 +8,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.dto.MqttMsgVo;
+import com.szwl.model.dto.MqttReturnVo;
 import com.szwl.model.entity.MqttMsg;
 import com.szwl.model.entity.MqttTopics;
 import com.szwl.model.param.MqttMsgParam;
 import com.szwl.service.MqttMsgService;
 import com.szwl.service.MqttTopicsService;
 import com.szwl.service.base.MqttService;
+import com.szwl.util.MqttUtils;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.Date;
 
 /**
@@ -96,5 +101,39 @@ public class MqttController {
         return R.ok(recordPage);
     }
 
+    @ApiOperation("获取客户端列表")
+    @GetMapping("/getClientList")
+    public ResponseModel<IPage<?>> getClientList(String page, String limit, String clientId){
+        String clients = MqttUtils.clients(page, limit, clientId);
+        JSONObject jsonObject = new JSONObject(clients);
+        JSONArray data = jsonObject.getJSONArray("data");
+        JSONObject meta = jsonObject.getJSONObject("meta");
+        ArrayList<MqttReturnVo> list = new ArrayList<>();
+        // 获取设备编号和连接状态
+        for (int i = 0; i < data.length(); i++) {
+            JSONObject jsonObject1 = data.getJSONObject(i);
+            MqttReturnVo mqttReturnVo = new MqttReturnVo();
+            String clientid = jsonObject1.getString("clientid");
+            boolean connected = (boolean)jsonObject1.get("connected");
+            mqttReturnVo.setClientId(clientid);
+            mqttReturnVo.setConnected(connected);
+            list.add(mqttReturnVo);
+        }
+        Page<MqttReturnVo> returnVoPage = new Page<>();
+        if (StringUtils.isEmpty(clientId)) {
+            // 获取总数
+            int count = (int)meta.get("count");
+            returnVoPage.setTotal(count);
+        } else {
+            if (!list.isEmpty()) {
+                returnVoPage.setTotal(1);
+            }
+        }
+        returnVoPage.setCurrent(Integer.parseInt(page));
+        returnVoPage.setSize(Integer.parseInt(limit));
+        returnVoPage.setRecords(list);
+        return R.ok(returnVoPage);
+    }
+
 }
 

+ 11 - 0
src/main/java/com/szwl/model/dto/MqttReturnVo.java

@@ -0,0 +1,11 @@
+package com.szwl.model.dto;
+
+import lombok.Data;
+
+@Data
+public class MqttReturnVo {
+
+    private String clientId;
+
+    private boolean connected;
+}

+ 39 - 0
src/main/java/com/szwl/util/MqttUtils.java

@@ -0,0 +1,39 @@
+package com.szwl.util;
+
+import okhttp3.*;
+
+import java.io.IOException;
+
+public class MqttUtils {
+
+    private static final String USERNAME = "5ea119be0c86cea0";
+    private static final String PASSWORD = "9BAQseXDprN2QvXaLh2iUVyEznAdkr9CugsXuK0M3DzOD";
+
+    public static String clients(String page, String limit, String clientId) {
+        String result = "";
+        try {
+
+            OkHttpClient client = new OkHttpClient();
+
+            // 构建 URL,添加查询参数
+            HttpUrl url = HttpUrl.parse("http://112.74.63.148:18083/api/v5/clients")
+                    .newBuilder()
+                    .addQueryParameter("page", page)
+                    .addQueryParameter("limit", limit)
+                    .addQueryParameter("like_clientid", clientId)
+                    .build();
+
+            Request request = new Request.Builder()
+                    .url(url)
+                    .header("Content-Type", "application/json")
+                    .header("Authorization", Credentials.basic(USERNAME, PASSWORD))
+                    .build();
+
+            Response response = client.newCall(request).execute();
+            result = response.body().string();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+}