Эх сурвалжийг харах

录像索引主动获取代码提交

jingyuanchao 1 жил өмнө
parent
commit
c61fb83a06

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/north/controller/HostController.java

@@ -44,7 +44,7 @@ public class HostController {
     @ApiOperation("获取指定通道的录像完整性数据")
     @GetMapping({"/host/videoIntegrityCheck"})
     public AjaxResult videoIntegrityCheck(@RequestBody VideoIntegrityGetReq req ) {
-        this.videoIntegrityCheckService.GetRecordInfo(req);
+        this.videoIntegrityCheckService.getRecordInfo(req);
         return AjaxResult.success();
     }
 

+ 4 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/mapper/IotServerInfoMapper.java

@@ -5,6 +5,8 @@ import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
 import com.xunmei.system.api.domain.SysOrg;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
+
 /**
  * <p>
  * iot客户端信息 Mapper 接口
@@ -17,4 +19,6 @@ public interface IotServerInfoMapper extends BaseMapper<IotServerInfo> {
 
 
     SysOrg selectOrgByToken(@Param("token") String token);
+
+    void updateConnectTimeByToken(@Param("token") String token, @Param("date") Date date);
 }

+ 4 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/service/IotServerInfoService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
 import com.xunmei.system.api.domain.SysOrg;
 
+import java.util.Date;
+
 /**
  * <p>
  * iot客户端信息 服务类
@@ -23,4 +25,6 @@ public interface IotServerInfoService extends IService<IotServerInfo> {
     IotServerInfo selectByToken(String token);
 
     SysOrg selectOrgByToken(String token);
+
+    void updateConnectTimeByToken(String token, Date date);
 }

+ 7 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/service/impl/IotServerInfoServiceImpl.java

@@ -14,6 +14,8 @@ import com.xunmei.system.api.util.LogUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
+
 /**
  * <p>
  * iot客户端信息 服务实现类
@@ -77,4 +79,9 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         }
         return sysOrg;
     }
+
+    @Override
+    public void updateConnectTimeByToken(String token, Date date) {
+        baseMapper.updateConnectTimeByToken(token,date);
+    }
 }

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/IVideoIntegrityCheckService.java

@@ -26,6 +26,6 @@ public interface IVideoIntegrityCheckService extends IService<MediatorVideoInteg
 
     MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCode(Long orgId, String equipmentCode, String channelCode);
 
-    void GetRecordInfo(VideoIntegrityGetReq req);
+    void getRecordInfo(VideoIntegrityGetReq req);
 
 }

+ 4 - 7
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -136,13 +136,10 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     }
 
     @Override
-    public void GetRecordInfo(VideoIntegrityGetReq req) {
-
-
-        IotServerUtils.invokeHostServer("",new JSONObject(),WebSocketConstants.GET_RECORD_INFOS_SERVICES,req);
-    /*    WebsocketResult websocketResult = IotServerUtils.invokeDownLinkServer(TopicTypeEnums.PRODUCT_SERVICE_INVOKE, iotDeviceInfo.getDeviceProduct(), iotDeviceInfo.getDeviceCode(), WebSocketConstants.GET_RECORD_INFOS_SERVICES, object);
-        LogUtils.WEBSOCKET_MSG.info("获取录像完整性数据:{}", JacksonUtils.toJSONString(websocketResult));
-        WebSocketUtils.sendMessage(iotDeviceInfo.getIotToken(),JacksonUtils.toJSONString(websocketResult));*/
+    public void getRecordInfo(VideoIntegrityGetReq req) {
+        final String topic = TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), req.getProductName(), req.getDeviceName());
+        final WebsocketResult result = IotServerUtils.invokeHostServer(topic, new JSONObject(), WebSocketConstants.GET_RECORD_INFOS_SERVICES, req);
+        WebSocketUtils.sendAll(JacksonUtils.toJSONString(result));
     }
 
     @Override

+ 5 - 11
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/SocWebSocketHandler.java

@@ -69,7 +69,7 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
             } else {
                 final SysOrg sysOrg = orgService.selectOrgById(serverInfo.getOrgId(), SecurityConstants.INNER);
                 map.put("orgCode", sysOrg.getCode());
-                map.put("orgName", serverInfo.getIotCode());
+                map.put("orgName", sysOrg.getShortName());
                 map.put("statusCode", WebsocketStatus.SUCCESS.getStatusCode());
                 map.put("statusDescription", serverInfo.getIotCode());
             }
@@ -82,16 +82,8 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
 
         String token = (String) session.getAttributes().get("token");
         if (StringUtils.isNotEmpty(token)) {
-            String ip = StringUtil.EMPTY_STRING;
-            final List<String> list = session.getHandshakeHeaders().get("x-forwarded-for");
-            if (ObjectUtil.isNotEmpty(list)) {
-                ip = list.get(0);
-                if (ip.contains(",")) {
-                    ip = ip.split(",")[0];
-                }
-                if (StringUtils.isNotEmpty(ip))
-                    LogUtils.WEBSOCKET_MSG.info("[准备建立连接],ip:{}", ip);
-            }
+            String ip =WebSocketUtils.getIp(session);
+            LogUtils.WEBSOCKET_MSG.info("[准备建立连接],ip:{}", ip);
             IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
             Map<String, Object> map = new HashMap<>();
             if (serverInfo == null) {
@@ -219,7 +211,9 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
      */
     @Override
     protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception {
+        LogUtils.WEBSOCKET_MSG.info("收到来自 {} 心跳消息",WebSocketUtils.getIp(session));
         String token = WebSocketSessionHolder.updateToken(session);
+        iotServerInfoService.updateConnectTimeByToken(token,new Date());
         WebSocketUtils.sendPongMessage(session);
     }
 

+ 4 - 0
soc-modules/soc-modules-host/src/main/resources/mapper/IotServerInfoMapper.xml

@@ -5,4 +5,8 @@
     <select id="selectOrgByToken" resultType="com.xunmei.system.api.domain.SysOrg">
         select o.* from iot_server_info i inner join sys_org o on o.id=i.org_id  where i.iot_code=#{token}
     </select>
+
+    <update id="updateConnectTimeByToken">
+        update iot_server_info set last_connect_time=#{date} where iot_code=#{token}
+    </update>
 </mapper>