diff --git a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 557ed8e..d2f8e7a 100644 --- a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -48,7 +48,12 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // 从WebSocket会话中获取登录用户信息 LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); - + // 检查loginUser是否为空 + if (ObjectUtil.isNull(loginUser)) { + log.error("[handleTextMessage] loginUser is null. sessionId: {}", session.getId()); + session.close(CloseStatus.BAD_DATA); + return; + } // 创建WebSocket消息DTO对象 WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); @@ -89,6 +94,13 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { */ @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); + // 检查loginUser是否为空 + if (ObjectUtil.isNull(loginUser)) { + log.error("[handleTextMessage] loginUser is null. sessionId: {}", session.getId()); + session.close(CloseStatus.BAD_DATA); + return; + } log.error("[transport error] sessionId: {} , exception:{}", session.getId(), exception.getMessage()); } diff --git a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java index 0ad39af..31617df 100644 --- a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java +++ b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java @@ -26,18 +26,22 @@ public class WebSocketTopicListener implements ApplicationRunner, Ordered { public void run(ApplicationArguments args) throws Exception { // 订阅WebSocket消息 WebSocketUtils.subscribeMessage((message) -> { - log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage()); - // 如果key不为空就按照key发消息 如果为空就群发 - if (CollUtil.isNotEmpty(message.getSessionKeys())) { - message.getSessionKeys().forEach(key -> { - if (WebSocketSessionHolder.existSession(key)) { + try { + log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage()); + // 如果key不为空就按照key发消息 如果为空就群发 + if (CollUtil.isNotEmpty(message.getSessionKeys())) { + message.getSessionKeys().forEach(key -> { + if (WebSocketSessionHolder.existSession(key)) { + WebSocketUtils.sendMessage(key, message.getMessage()); + } + }); + } else { + WebSocketSessionHolder.getSessionsAll().forEach(key -> { WebSocketUtils.sendMessage(key, message.getMessage()); - } - }); - } else { - WebSocketSessionHolder.getSessionsAll().forEach(key -> { - WebSocketUtils.sendMessage(key, message.getMessage()); - }); + }); + } + } catch (Exception e) { + log.error("处理消息时发生异常", e); } }); log.info("初始化WebSocket主题订阅监听器成功"); diff --git a/dk-modules/resource/src/main/resources/logback-plus.xml b/dk-modules/resource/src/main/resources/logback-plus.xml index a2e187f..242ca0b 100644 --- a/dk-modules/resource/src/main/resources/logback-plus.xml +++ b/dk-modules/resource/src/main/resources/logback-plus.xml @@ -12,6 +12,10 @@ ${console.log.pattern} utf-8 + + + ERROR + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java index 05be41b..ca13042 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java @@ -44,9 +44,9 @@ public class DeviceLogsController { * @param param * @return */ - @GetMapping("/devices/{device_sn}/logs-uploaded") + @GetMapping("/{workspace_id}/devices/{device_sn}/logs-uploaded") @Operation(summary = "根据查询参数分页获取设备上传日志列表。", description = "根据查询参数分页获取设备上传日志列表。") - public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param, + public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param, @PathVariable("workspace_id") String workspaceId, @PathVariable("device_sn") String deviceSn) { PaginationData data = deviceLogsService.getUploadedLogs(deviceSn, param); return HttpResultResponse.success(data); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java index e1cc582..5b809fb 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java @@ -101,4 +101,10 @@ public class DeviceDTO { private String tenantId; private String videoId; + + private Float latitude; + + private Float longitude; + + private Float height; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index 67ad805..16b21ec 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -398,6 +398,14 @@ public class DeviceServiceImpl implements IDeviceService { log.error(e.getLocalizedMessage() + "Entity: {}", entity); } DeviceDTO deviceDTO = builder.build(); + if(deviceDTO.getDomain() != null && deviceDTO.getDomain().getDomain() == 3 && deviceDTO.getLatitude() != null){ + Optional deviceOsd = deviceRedisService.getDeviceOsd(entity.getDeviceSn(), OsdDockDrone.class); + if(!deviceOsd.isEmpty()){ + deviceDTO.setLatitude(deviceOsd.get().getLatitude()); + deviceDTO.setLongitude(deviceOsd.get().getLongitude()); + deviceDTO.setHeight(deviceOsd.get().getHeight()); + } + } addFirmwareStatus(deviceDTO, entity); return deviceDTO; } diff --git a/dk-modules/sample/src/main/resources/application.yml b/dk-modules/sample/src/main/resources/application.yml index 3ddd02f..1129415 100644 --- a/dk-modules/sample/src/main/resources/application.yml +++ b/dk-modules/sample/src/main/resources/application.yml @@ -39,7 +39,7 @@ mqtt: # BASIC parameters are required. BASIC: protocol: MQTT - host: 121.237.182.235 + host: 114.235.183.162 port: 1883 username: adminPCBASIC password: yongqiang666 @@ -48,7 +48,7 @@ mqtt: path: DRC: protocol: WS - host: 121.237.182.235 + host: 114.235.183.162 port: 8083 path: /mqtt username: adminPCDRC diff --git a/dk-modules/sample/src/main/resources/logback-plus.xml b/dk-modules/sample/src/main/resources/logback-plus.xml index a2e187f..242ca0b 100644 --- a/dk-modules/sample/src/main/resources/logback-plus.xml +++ b/dk-modules/sample/src/main/resources/logback-plus.xml @@ -12,6 +12,10 @@ ${console.log.pattern} utf-8 + + + ERROR + diff --git a/pom.xml b/pom.xml index 2577794..564f8f8 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ 2.2.2 UTF-8 UTF-8 - 17 + 21 3.2.11 2023.0.3 3.2.3 @@ -85,7 +85,7 @@ wuyuan - dev + wuyuan 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP