Browse Source

Merge remote-tracking branch 'origin/V0.1.1' into V0.1.1

jingyuanchao 1 year ago
parent
commit
483df5b5c2

+ 1 - 1
project_data/sql/0.1.1/soc/soc.sql

@@ -690,7 +690,7 @@ CREATE TABLE `deploy_operation_log`  (
 -- ----------------------------
 drop view if exists hv_org;
 CREATE VIEW `hv_org` AS
-select id as org_id,code as org_code,name as org_name,parent_id,sort as order_no,path,deleted as is_deleted,type
+select id as org_id,code as org_code,short_name as org_name,parent_id,sort as order_no,path,deleted as is_deleted,type
 from sys_org;
 
 -- ----------------------------

+ 1 - 1
soc-modules/soc-modules-deploy/src/main/resources/mapper/HostInfoDao.xml

@@ -172,7 +172,7 @@
                 AND h.hostStatus = #{info.hostStatus}
             </if>
             <if test=" info.hostOrg != null ">
-                v.is_deleted = 0
+                and v.is_deleted = 0
                 <choose>
                     <when test=" info.checkSub == true">
                         and v.path like CONCAT('%', #{info.hostOrg}, '%' )

+ 23 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/controller/WebsocketController.java

@@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author gaoxiong
@@ -85,4 +87,25 @@ public class WebsocketController {
         websocketPublisher.sendMessage(msg);
         return AjaxResult.success();
     }
+
+    public static void main(String[] args) {
+        String url = "/things/SmartBulb/LivingRoom/service/invoke/reply";
+
+        // 正则表达式模式
+        Pattern pattern = Pattern.compile("^/things/(\\w+)/(\\w+)/service/invoke$");
+
+        // 创建Matcher对象
+        Matcher matcher = pattern.matcher(url);
+
+        // 检查是否匹配成功
+        if (matcher.find()) {
+            // 提取动态参数
+            String productName = matcher.group(1);
+            String deviceName = matcher.group(2);
+            System.out.println("Product Name: " + productName);
+            System.out.println("Device Name: " + deviceName);
+        } else {
+            System.out.println("URL does not match the expected format.");
+        }
+    }
 }

+ 27 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/dto/WebsocketUrlInfo.java

@@ -0,0 +1,27 @@
+package com.xunmei.mediator.websocket.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author gaoxiong
+ * @Title: topic部分参数
+ * @Package
+ * @Description:
+ * @date 2024/7/917:35
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WebsocketUrlInfo {
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+}

+ 2 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/handler/SocWebSocketHandler.java

@@ -51,8 +51,8 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
             Map<String,Object> map = new HashMap<>();
             IotServerInfo serverInfo = iotServerInfoService.getToken(registerCode);
             if(serverInfo == null){
-                map.put("statusDescription", WebsocketStatus.CLOSED.getStatusDescription());
-                map.put("statusCode", WebsocketStatus.CLOSED.getStatusCode());
+                map.put("statusDescription", "验证码不存在!");
+                map.put("statusCode", WebsocketStatus.ERROR.getStatusCode());
             }else{
                 map.put("statusDescription",serverInfo.getIotCode());
                 map.put("statusCode",WebsocketStatus.SUCCESS.getStatusCode());

+ 27 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/utils/WebSocketUtils.java

@@ -3,6 +3,7 @@ package com.xunmei.mediator.websocket.utils;
 import cn.hutool.core.collection.CollUtil;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.mediator.websocket.dto.WebSocketMessageDto;
+import com.xunmei.mediator.websocket.dto.WebsocketUrlInfo;
 import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -16,6 +17,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Consumer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import static com.xunmei.mediator.websocket.constant.WebSocketConstants.WEB_SOCKET_TOPIC;
 
@@ -126,4 +129,28 @@ public class WebSocketUtils {
             }
         }
     }
+
+    /**
+     * 解析websocket topic 路径参数
+     * @param url
+     * @return
+     */
+    private static WebsocketUrlInfo resolveUrlInfo(String url) {
+        // 正则表达式模式
+        Pattern pattern = Pattern.compile("^/things/(\\w+)/(\\w+)/service/invoke$");
+        // 创建Matcher对象
+        Matcher matcher = pattern.matcher(url);
+        // 检查是否匹配成功
+        if (matcher.find()) {
+            // 提取动态参数
+            String productName = matcher.group(1);
+            String deviceName = matcher.group(2);
+            WebsocketUrlInfo websocketUrlInfo = new WebsocketUrlInfo();
+            websocketUrlInfo.setDeviceName(deviceName);
+            websocketUrlInfo.setProductName(productName);
+            return websocketUrlInfo;
+        } else {
+            return null;
+        }
+    }
 }