Commit 59358ca8dfdcb3f080f66ff70d82ca2e7eb99b12

Authored by zhangmeiyang
1 parent 2e676e7c

```

feat(mqtt): 添加接收事件类型枚举并重构消息处理逻辑

- 引入ReceiveEventType枚举替代原有的RecFailEventType和RecSuccessEventType
- 在ReceiveModel中添加receiveEventType字段用于标识事件类型
- 实现matchEventType方法根据MQTT主题自动匹配事件类型
- 移除MqttMessageReceiver中的冗余常量定义
- 重命名RecFailEventType为ReceiveEventType并扩展支持多种服务类型
```
mqtt-core/src/main/java/com/diligrp/mqtt/core/model/ReceiveModel.java
1 1 package com.diligrp.mqtt.core.model;
2 2  
  3 +import com.diligrp.mqtt.core.type.ReceiveEventType;
3 4 import lombok.Data;
4 5  
5 6 import java.util.UUID;
... ... @@ -43,4 +44,8 @@ public class ReceiveModel {
43 44 * 时间戳
44 45 */
45 46 private Long timestamp;
  47 + /**
  48 + * 接收事件类型
  49 + */
  50 + private ReceiveEventType receiveEventType;
46 51 }
... ...
mqtt-core/src/main/java/com/diligrp/mqtt/core/type/RecFailEventType.java deleted 100644 → 0
1   -package com.diligrp.mqtt.core.type;
2   -
3   -public enum RecFailEventType {
4   - PRINTER("printer");
5   - public final String value;
6   -
7   - RecFailEventType(String value) {
8   - this.value = value;
9   - }
10   -}
mqtt-core/src/main/java/com/diligrp/mqtt/core/type/RecSuccessEventType.java deleted 100644 → 0
1   -package com.diligrp.mqtt.core.type;
2   -
3   -/**
4   - * @Author: zhangmeiyang
5   - * @CreateTime: 2026-01-14 16:59
6   - * @Version: todo
7   - */
8   -public enum RecSuccessEventType {
9   - PRINTER("printer");
10   - public final String value;
11   -
12   - RecSuccessEventType(String value) {
13   - this.value = value;
14   - }
15   -}
mqtt-core/src/main/java/com/diligrp/mqtt/core/type/ReceiveEventType.java 0 → 100644
  1 +package com.diligrp.mqtt.core.type;
  2 +
  3 +import java.util.Objects;
  4 +
  5 +public enum ReceiveEventType {
  6 + PRINTER_RECEIPT_SERVICE("/printSucc/"),
  7 + PRINTER_ONLINE_SERVICE("/priGoOnline/"),
  8 + UNKNOWN_SERVICE("unknownService");
  9 + public final String value;
  10 +
  11 + ReceiveEventType(String value) {
  12 + this.value = value;
  13 + }
  14 +
  15 + /**
  16 + * 根据MQTT主题匹配事件类型
  17 + *
  18 + * @param topic MQTT主题
  19 + * @return 匹配的事件类型,未匹配成功则返回null
  20 + */
  21 + public static ReceiveEventType matchEventType(String topic) {
  22 + if (Objects.isNull(topic)) {
  23 + return UNKNOWN_SERVICE;
  24 + }
  25 + for (ReceiveEventType eventType : ReceiveEventType.values()) {
  26 + if (topic.startsWith(eventType.value)) {
  27 + return eventType;
  28 + }
  29 + }
  30 + return UNKNOWN_SERVICE;
  31 + }
  32 +}
... ...
mqtt-integration/src/main/java/com/diligrp/mqtt/integration/handler/MqttMessageReceiver.java
... ... @@ -3,6 +3,7 @@ package com.diligrp.mqtt.integration.handler;
3 3 import com.diligrp.mqtt.core.event.RecFailEvent;
4 4 import com.diligrp.mqtt.core.event.RecSuccessEvent;
5 5 import com.diligrp.mqtt.core.model.ReceiveModel;
  6 +import com.diligrp.mqtt.core.type.ReceiveEventType;
6 7 import com.diligrp.mqtt.core.util.JsonUtils;
7 8 import jakarta.annotation.Resource;
8 9 import lombok.extern.slf4j.Slf4j;
... ... @@ -27,8 +28,6 @@ public class MqttMessageReceiver {
27 28 private static final String TOPIC_HEADER = "mqtt_receivedTopic";
28 29 private static final String QOS_HEADER = "mqtt_receivedQos";
29 30 private static final String TIMESTAMP_HEADER = "timestamp";
30   - private static final String SUCCESS_EVENT_HEADER = "mqtt_success_event";
31   - private static final String FAIL_EVENT_HEADER = "mqtt_fail_event";
32 31  
33 32 @Resource
34 33 private ApplicationEventPublisher applicationEventPublisher;
... ... @@ -57,6 +56,7 @@ public class MqttMessageReceiver {
57 56 receiveModel.setDuplicate(duplicate);
58 57 receiveModel.setPayload(payload);
59 58 receiveModel.setTimestamp(timestamp);
  59 + receiveModel.setReceiveEventType(ReceiveEventType.matchEventType(topic));
60 60 applicationEventPublisher.publishEvent(new RecSuccessEvent(this, receiveModel));
61 61 } catch (Exception e) {
62 62 log.error("处理MQTT消息失败", e);
... ...