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