Browse Source

1

pull/1/head
吴远 3 months ago
parent
commit
ea13e9e18f
  1. 14
      dk-common/common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java
  2. 4
      dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java
  3. 4
      dk-modules/resource/src/main/resources/logback-plus.xml
  4. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java
  5. 6
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java
  6. 8
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
  7. 4
      dk-modules/sample/src/main/resources/application.yml
  8. 4
      dk-modules/sample/src/main/resources/logback-plus.xml
  9. 4
      pom.xml

14
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 { protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 从WebSocket会话中获取登录用户信息 // 从WebSocket会话中获取登录用户信息
LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); 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对象 // 创建WebSocket消息DTO对象
WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto();
webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId())); webSocketMessageDto.setSessionKeys(List.of(loginUser.getUserId()));
@ -89,6 +94,13 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
*/ */
@Override @Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { 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()); log.error("[transport error] sessionId: {} , exception:{}", session.getId(), exception.getMessage());
} }

4
dk-common/common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java

@ -26,6 +26,7 @@ public class WebSocketTopicListener implements ApplicationRunner, Ordered {
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
// 订阅WebSocket消息 // 订阅WebSocket消息
WebSocketUtils.subscribeMessage((message) -> { WebSocketUtils.subscribeMessage((message) -> {
try {
log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage()); log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage());
// 如果key不为空就按照key发消息 如果为空就群发 // 如果key不为空就按照key发消息 如果为空就群发
if (CollUtil.isNotEmpty(message.getSessionKeys())) { if (CollUtil.isNotEmpty(message.getSessionKeys())) {
@ -39,6 +40,9 @@ public class WebSocketTopicListener implements ApplicationRunner, Ordered {
WebSocketUtils.sendMessage(key, message.getMessage()); WebSocketUtils.sendMessage(key, message.getMessage());
}); });
} }
} catch (Exception e) {
log.error("处理消息时发生异常", e);
}
}); });
log.info("初始化WebSocket主题订阅监听器成功"); log.info("初始化WebSocket主题订阅监听器成功");
} }

4
dk-modules/resource/src/main/resources/logback-plus.xml

@ -12,6 +12,10 @@
<pattern>${console.log.pattern}</pattern> <pattern>${console.log.pattern}</pattern>
<charset>utf-8</charset> <charset>utf-8</charset>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
</filter>
</appender> </appender>
<include resource="logback-common.xml" /> <include resource="logback-common.xml" />

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java

@ -44,9 +44,9 @@ public class DeviceLogsController {
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/devices/{device_sn}/logs-uploaded") @GetMapping("/{workspace_id}/devices/{device_sn}/logs-uploaded")
@Operation(summary = "根据查询参数分页获取设备上传日志列表。", description = "根据查询参数分页获取设备上传日志列表。") @Operation(summary = "根据查询参数分页获取设备上传日志列表。", description = "根据查询参数分页获取设备上传日志列表。")
public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param, public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param, @PathVariable("workspace_id") String workspaceId,
@PathVariable("device_sn") String deviceSn) { @PathVariable("device_sn") String deviceSn) {
PaginationData<DeviceLogsDTO> data = deviceLogsService.getUploadedLogs(deviceSn, param); PaginationData<DeviceLogsDTO> data = deviceLogsService.getUploadedLogs(deviceSn, param);
return HttpResultResponse.success(data); return HttpResultResponse.success(data);

6
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 tenantId;
private String videoId; private String videoId;
private Float latitude;
private Float longitude;
private Float height;
} }

8
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); log.error(e.getLocalizedMessage() + "Entity: {}", entity);
} }
DeviceDTO deviceDTO = builder.build(); DeviceDTO deviceDTO = builder.build();
if(deviceDTO.getDomain() != null && deviceDTO.getDomain().getDomain() == 3 && deviceDTO.getLatitude() != null){
Optional<OsdDockDrone> 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); addFirmwareStatus(deviceDTO, entity);
return deviceDTO; return deviceDTO;
} }

4
dk-modules/sample/src/main/resources/application.yml

@ -39,7 +39,7 @@ mqtt:
# BASIC parameters are required. # BASIC parameters are required.
BASIC: BASIC:
protocol: MQTT protocol: MQTT
host: 121.237.182.235 host: 114.235.183.162
port: 1883 port: 1883
username: adminPCBASIC username: adminPCBASIC
password: yongqiang666 password: yongqiang666
@ -48,7 +48,7 @@ mqtt:
path: path:
DRC: DRC:
protocol: WS protocol: WS
host: 121.237.182.235 host: 114.235.183.162
port: 8083 port: 8083
path: /mqtt path: /mqtt
username: adminPCDRC username: adminPCDRC

4
dk-modules/sample/src/main/resources/logback-plus.xml

@ -12,6 +12,10 @@
<pattern>${console.log.pattern}</pattern> <pattern>${console.log.pattern}</pattern>
<charset>utf-8</charset> <charset>utf-8</charset>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
</filter>
</appender> </appender>
<include resource="logback-common.xml" /> <include resource="logback-common.xml" />

4
pom.xml

@ -16,7 +16,7 @@
<revision>2.2.2</revision> <revision>2.2.2</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version> <java.version>21</java.version>
<spring-boot.version>3.2.11</spring-boot.version> <spring-boot.version>3.2.11</spring-boot.version>
<spring-cloud.version>2023.0.3</spring-cloud.version> <spring-cloud.version>2023.0.3</spring-cloud.version>
<spring-boot-admin.version>3.2.3</spring-boot-admin.version> <spring-boot-admin.version>3.2.3</spring-boot-admin.version>
@ -85,7 +85,7 @@
<id>wuyuan</id> <id>wuyuan</id>
<properties> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>wuyuan</profiles.active>
<nacos.server>127.0.0.1:8848</nacos.server> <nacos.server>127.0.0.1:8848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>

Loading…
Cancel
Save