Browse Source

添加灯杆大屏接口

邵洋 1 năm trước cách đây
mục cha
commit
abc538082f

+ 5 - 0
screen-service/pom.xml

@@ -66,6 +66,11 @@
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
         </dependency>
+        <!--okhttp请求包-->
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 154 - 5
screen-service/src/main/java/com/zksy/screen/controller/TestController.java

@@ -1,15 +1,164 @@
 package com.zksy.screen.controller;
 
-import org.springframework.web.bind.annotation.GetMapping;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.zksy.common.core.domain.Result;
+import com.zksy.screen.domain.request.InvokeBuild;
+import com.zksy.screen.domain.request.TopWebPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.IOException;
+
 @RestController
+@Api(tags = "灯杆大屏", description = "灯杆大屏")
 @RequestMapping("/test")
+@Slf4j
 public class TestController {
-
-    @GetMapping("/a")
-    public String a(){
-        return "性与暴力";
+    @Autowired
+    private OkHttpClient httpClient;
+    private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+    @ApiOperation(value = "清屏,清除顶层网页内容")
+    @PostMapping("/clearTopWebPage")
+    public Result clearTopWebPage(@ApiParam(value = "设备编码",required = true) @RequestParam(value = "deviceCode",defaultValue = "")String deviceCode,
+                                  @ApiParam(value = "入参类型",required = true) @RequestParam(value = "type",defaultValue = "clear")String type) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonParams = null;
+        try {
+            jsonParams = objectMapper.writeValueAsString(type);
+        } catch (JsonProcessingException e) {
+            log.error("JSON序列化失败: {}", e);
+            return Result.error("请求失败");
+        }
+        // 创建请求体
+        RequestBody body = RequestBody.create(jsonParams, JSON);
+        // 构建请求
+        Request requestHttp = new Request.Builder()
+                .url("http://172.16.102.52:8016/command/"+deviceCode)
+                .post(body)
+                .build();
+        // 发送请求
+        try (Response response = httpClient.newCall(requestHttp).execute()) {
+            if (!response.isSuccessful()) {
+                return Result.error("请求失败");
+            }
+            ResponseBody responseBody = response.body();
+            if (responseBody != null) {
+                String responseString = responseBody.string();
+                JsonNode rootNode = objectMapper.readTree(responseString);
+                JsonNode success = rootNode.path("success");
+                if("true".equals(success.asText())) {
+                    JsonNode dataNode = rootNode.path("data");
+                    if (dataNode != null) {
+                        return Result.ok(dataNode);
+                    } else {
+                        return Result.ok(null);
+                    }
+                }else {
+                    return Result.error("清屏,清除顶层网页内容失败");
+                }
+            }
+        } catch (IOException e) {
+            log.error("请求失败: {}", e);
+        }
+        return Result.error("请求失败");
+    }
+    @ApiOperation(value = "加载顶层网页")
+    @PostMapping("/getTopWebPage")
+    public Result getTopWebPage(TopWebPage request,@ApiParam(value = "设备编码",required = true) @RequestParam(value = "deviceCode",defaultValue = "") String deviceCode) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonParams = null;
+        try {
+            jsonParams = objectMapper.writeValueAsString(request);
+        } catch (JsonProcessingException e) {
+            log.error("JSON序列化失败: {}", e);
+            return Result.error("请求失败");
+        }
+        // 创建请求体
+        RequestBody body = RequestBody.create(jsonParams, JSON);
+        // 构建请求
+        Request requestHttp = new Request.Builder()
+                .url("http://172.16.102.52:8016/command/"+deviceCode)
+                .post(body)
+                .build();
+        // 发送请求
+        try (Response response = httpClient.newCall(requestHttp).execute()) {
+            if (!response.isSuccessful()) {
+                return Result.error("请求失败");
+            }
+            ResponseBody responseBody = response.body();
+            if (responseBody != null) {
+                String responseString = responseBody.string();
+                JsonNode rootNode = objectMapper.readTree(responseString);
+                JsonNode success = rootNode.path("success");
+                if("true".equals(success.asText())) {
+                    JsonNode dataNode = rootNode.path("data");
+                    if (dataNode != null) {
+                        return Result.ok(dataNode);
+                    } else {
+                        return Result.ok(null);
+                    }
+                }else {
+                    return Result.error("加载顶层网页失败");
+                }
+            }
+        } catch (IOException e) {
+            log.error("请求失败: {}", e);
+        }
+        return Result.error("请求失败");
+    }
+    @ApiOperation(value = "滚动文字")
+    @PostMapping("/getInvokeBuild")
+    public Result getInvokeBuild(InvokeBuild request,
+                                 @ApiParam(value = "设备编码",required = true) @RequestParam(value = "deviceCode",defaultValue = "") String deviceCode) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        String jsonParams = null;
+        try {
+            jsonParams = objectMapper.writeValueAsString(request);
+        } catch (JsonProcessingException e) {
+            log.error("JSON序列化失败: {}", e);
+            return Result.error("请求失败");
+        }
+        // 创建请求体
+        RequestBody body = RequestBody.create(jsonParams, JSON);
+        // 构建请求
+        Request requestHttp = new Request.Builder()
+                .url("http://172.16.102.52:8016/command/"+deviceCode)
+                .post(body)
+                .build();
+        // 发送请求
+        try (Response response = httpClient.newCall(requestHttp).execute()) {
+            if (!response.isSuccessful()) {
+                return Result.error("请求失败");
+            }
+            ResponseBody responseBody = response.body();
+            if (responseBody != null) {
+                String responseString = responseBody.string();
+                JsonNode rootNode = objectMapper.readTree(responseString);
+                JsonNode success = rootNode.path("success");
+                if("true".equals(success.asText())) {
+                    JsonNode dataNode = rootNode.path("data");
+                    if (dataNode != null) {
+                        return Result.ok(dataNode);
+                    } else {
+                        return Result.ok(null);
+                    }
+                }else {
+                    return Result.error("滚动文字失败");
+                }
+            }
+        } catch (IOException e) {
+            log.error("请求失败: {}", e);
+        }
+        return Result.error("请求失败");
     }
 }

+ 29 - 0
screen-service/src/main/java/com/zksy/screen/domain/request/InvokeBuild.java

@@ -0,0 +1,29 @@
+package com.zksy.screen.domain.request;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 滚动文字
+ * @date 2025/2/17 15:29:19
+ */
+public class InvokeBuild {
+    @ApiModelProperty(value = "类型", example = "invokeBuildInJs")
+    private String persistent;
+    @ApiModelProperty(value = "内置的js方法", example = "scrollMarquee")
+    private String method;
+    @ApiModelProperty(value = "滚动5次, 注意类型为Number, 填0停止滚动,填负数永久滚动", example = "5")
+    private Integer num;
+    @ApiModelProperty(value = "<i><b style=\\\"color:blue;\\\">这是</b>要滚动的文字示例</i>")
+    private String html;
+    @ApiModelProperty(value = "步进间隔,单位毫秒,注意类型为Number", example = "50")
+    private Integer interval;
+    @ApiModelProperty(value = "步进距离,单位像素,注意类型为Number", example = "1")
+    private Integer step;
+    @ApiModelProperty(value = "往左滚动,可填值left、 right", example = "left")
+    private String direction;
+    @ApiModelProperty(value = "在上方显示,可填值top、center、bottom", example = "top")
+    private String align;
+}

+ 21 - 0
screen-service/src/main/java/com/zksy/screen/domain/request/TopWebPage.java

@@ -0,0 +1,21 @@
+package com.zksy.screen.domain.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description 加载顶层网页
+ * @date 2025/2/17 10:44:23
+ */
+@Data
+public class TopWebPage {
+    @ApiModelProperty(value = "类型", example = "loadUrl")
+    private String type;
+    @ApiModelProperty(value = "网页地址")
+    private String url;
+    @ApiModelProperty(value = "持久化,重启会自动加载url", example = "true")
+    private Boolean persistent;
+}