From 9096bfd65e07281ddbaed90797a44dc9981c6e50 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Sun, 30 Mar 2025 11:26:40 +0800 Subject: [PATCH] websocket --- .../device/AirConditionerStateEnum.java | 14 ++- .../device/api/AbstractDeviceService.java | 15 +++ .../PsdkFloatingWindowTextPsdk.java | 48 +++++++ .../api/AbstractInterconnectionService.java | 13 +- .../cloudapi/livestream/VideoTypeEnum.java | 2 +- .../common/sdk/cloudapi/psdk/PsdkSpeaker.java | 104 +++++++++++++++ .../sdk/cloudapi/psdk/PsdkUiResource.java | 56 +++++++++ .../sdk/cloudapi/psdk/PsdkWidgetValue.java | 119 ++++++++++++++++++ .../sdk/cloudapi/psdk/PsdkWidgetValues.java | 39 ++++++ .../wayline/api/AbstractWaylineService.java | 2 +- .../dromara/common/sdk/mqtt/ChannelName.java | 8 ++ .../sdk/mqtt/events/EventsMethodEnum.java | 5 + .../sdk/mqtt/state/DockStateDataKeyEnum.java | 5 + .../sdk/mqtt/state/StateDataKeyEnum.java | 7 ++ dk-modules/sample/pom.xml | 22 ++++ .../service/impl/ControlServiceImpl.java | 3 + .../service/impl/InterconnectionService.java | 26 ++++ .../manage/service/impl/SDKDeviceService.java | 12 ++ .../impl/FlightAreaFileServiceImpl.java | 5 +- .../service/impl/FlightAreaServiceImpl.java | 6 + .../service/impl/FlightTaskServiceImpl.java | 5 + .../service/impl/WaylineFileServiceImpl.java | 1 + .../src/main/resources/application.properties | 4 +- .../testrocketmq/RocketMQApplication.java | 25 ---- .../testrocketmq/config/ConsumerConfig.java | 64 ---------- .../testrocketmq/config/MessageConfig.java | 27 ---- .../testrocketmq/config/ProducerConfig.java | 48 ------- .../consumer/RocketMsgListener.java | 100 --------------- .../testrocketmq/enums/MessageCodeEnum.java | 60 --------- .../testrocketmq/model/ConsumerMode.java | 22 ---- .../testrocketmq/model/ProducerMode.java | 25 ---- .../testrocketmq/producer/AsyncProducer.java | 47 ------- .../producer/ConsumeException.java | 20 --- .../testrocketmq/producer/MessageContext.java | 34 ----- .../producer/MessageProducer.java | 110 ---------------- 35 files changed, 510 insertions(+), 593 deletions(-) create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/PsdkFloatingWindowTextPsdk.java create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkSpeaker.java create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkUiResource.java create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValue.java create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValues.java create mode 100644 dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/InterconnectionService.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/RocketMQApplication.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ConsumerConfig.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/MessageConfig.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ProducerConfig.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/consumer/RocketMsgListener.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/enums/MessageCodeEnum.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ConsumerMode.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ProducerMode.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/AsyncProducer.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/ConsumeException.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageContext.java delete mode 100644 dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageProducer.java diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java index 0ea9558..7d1f9ac 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java @@ -11,7 +11,7 @@ import java.util.Arrays; * @version 1.7 * @date 2023/6/30 */ -public enum AirConditionerStateEnum { +public enum AirConditionerStateEnum { IDLE(0), @@ -33,6 +33,18 @@ public enum AirConditionerStateEnum { DEHUMIDIFICATION_PREPARATION(9), + FORCED_AIR_COOLING_PREPARE(10), + + FORCED_AIR_COOLING_CENTRE(11), + + FORCED_AIR_COOLING_EXIT(12), + + MIST_PREPARE(13), + + MIST_CENTRE(14), + + MIST_EXIT(15), + DISCONNECTED(32767), ; diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java index 9676d1b..a2e8fa1 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java @@ -5,6 +5,8 @@ import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderFlightHeight; import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderModeLostAction; import org.dromara.common.sdk.cloudapi.property.DockDroneRthMode; +import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; +import org.dromara.common.sdk.cloudapi.psdk.PsdkWidgetValues; import org.dromara.common.sdk.config.version.CloudSDKVersionEnum; import org.dromara.common.sdk.config.version.GatewayTypeEnum; import org.dromara.common.sdk.mqtt.ChannelName; @@ -271,4 +273,17 @@ public class AbstractDeviceService { throw new UnsupportedOperationException("dockSilentMode not implemented"); } + + @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK) + @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_PSDK_UI_RESOURCE, outputChannel = ChannelName.OUTBOUND_STATE) + public void dockPsdkUiResource(TopicStateRequest request, MessageHeaders headers) { + throw new UnsupportedOperationException("dockPsdkUiResource not implemented"); + } + + @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK) + @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_PSDK_WIDGE_VALUES, outputChannel = ChannelName.OUTBOUND_STATE) + public void dockPsdkWidgetValues(TopicStateRequest request, MessageHeaders headers) { + throw new UnsupportedOperationException("dockPsdkWidgetValues not implemented"); + } + } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/PsdkFloatingWindowTextPsdk.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/PsdkFloatingWindowTextPsdk.java new file mode 100644 index 0000000..4f50618 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/PsdkFloatingWindowTextPsdk.java @@ -0,0 +1,48 @@ +package org.dromara.common.sdk.cloudapi.interconnection; + +/** + * @author sean + * @version 1.7 + * @date 2023/10/16 + */ +public class PsdkFloatingWindowTextPsdk { + + /** + * Data content + * length: Less than 256 + */ + private Integer psdkIndex; + + private String value; + + + public PsdkFloatingWindowTextPsdk() { + } + + @Override + public String toString() { + return "PsdkFloatingWindowTextPsdk{" + + "psdkIndex=" + psdkIndex + + ",value='" + value + '\'' + + '}'; + } + + public String getValue() { + return value; + } + + public PsdkFloatingWindowTextPsdk setValue(String value) { + this.value = value; + return this; + } + + + public Integer getPsdkIndex() { + return psdkIndex; + } + + public PsdkFloatingWindowTextPsdk setPsdkIndex(Integer psdkIndex) { + this.psdkIndex = psdkIndex; + return this; + } +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java index 2b8051a..9354463 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java @@ -1,10 +1,7 @@ package org.dromara.common.sdk.cloudapi.interconnection.api; import org.dromara.common.sdk.annotations.CloudSDKVersion; -import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionFromEsdk; -import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionToEsdkRequest; -import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionToPsdkRequest; -import org.dromara.common.sdk.cloudapi.interconnection.InterconnectionMethodEnum; +import org.dromara.common.sdk.cloudapi.interconnection.*; import org.dromara.common.sdk.config.version.CloudSDKVersionEnum; import org.dromara.common.sdk.config.version.GatewayManager; import org.dromara.common.sdk.config.version.GatewayTypeEnum; @@ -64,10 +61,16 @@ public abstract class AbstractInterconnectionService { */ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_CUSTOM_DATA_TRANSMISSION_FROM_PSDK, outputChannel = ChannelName.OUTBOUND_EVENTS) @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) - public TopicEventsResponse customDataTransmissionFromPsdk(TopicEventsRequest request, MessageHeaders headers) { + public void customDataTransmissionFromPsdk(TopicEventsRequest request, MessageHeaders headers) { throw new UnsupportedOperationException("customDataTransmissionFromPsdk not implemented"); } + @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_PSDK_FLOARUBF_WINDOW_TEXT, outputChannel = ChannelName.OUTBOUND_EVENTS) + @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) + public void psdkFloatingWindowText(TopicEventsRequest request, MessageHeaders headers) { + throw new UnsupportedOperationException("psdkFloatingWindowText not implemented"); + } + /** * cloud-custom data transmit to psdk * @param gateway gateway device diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/VideoTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/VideoTypeEnum.java index 0003810..f701a25 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/VideoTypeEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/VideoTypeEnum.java @@ -36,7 +36,7 @@ public enum VideoTypeEnum { @JsonCreator public static VideoTypeEnum find(String videoType) { - return Arrays.stream(values()).filter(typeEnum -> typeEnum.type.equals(videoType)).findAny() + return Arrays.stream(values()).filter(typeEnum -> typeEnum.type.equals(videoType)).findAny() .orElseThrow(() -> new CloudSDKException(VideoTypeEnum.class , videoType)); } } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkSpeaker.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkSpeaker.java new file mode 100644 index 0000000..48034be --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkSpeaker.java @@ -0,0 +1,104 @@ +package org.dromara.common.sdk.cloudapi.psdk; + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.dromara.common.sdk.common.BaseModel; + +/** + * @auther wuyuan + * @data 2025/3/29 + */ +public class PsdkSpeaker { + + @JsonProperty("play_file_md5") + private Integer playFileMd5; + + @JsonProperty("play_file_name") + private String playFileName; + + @JsonProperty("play_mode") + private String playMode; + + + + @JsonProperty("play_volume") + private Integer playVolume; + + @JsonProperty("system_state") + private Integer systemState; + + + @JsonProperty("work_mode") + private Integer workMode; + + + public PsdkSpeaker() { + } + + @Override + public String toString() { + return "PsdkSpeaker{" + + "playFileMd5=" + playFileMd5 + + ",playFileName=" + playFileName + + ",playMode=" + playMode + + ",playVolume=" + playVolume + + ",systemState=" + systemState + + ",workMode=" + workMode + + '}'; + } + + public Integer getPlayFileMd5() { + return playFileMd5; + } + + public PsdkSpeaker setPlayFileMd5(Integer playFileMd5) { + this.playFileMd5 = playFileMd5; + return this; + } + + public String getPlayFileName() { + return playFileName; + } + + public PsdkSpeaker setPlayFileName(String playFileName) { + this.playFileName = playFileName; + return this; + } + + public String getPlayMode() { + return playMode; + } + + public PsdkSpeaker setPlayMode(String playMode) { + this.playMode = playMode; + return this; + } + + public Integer getPlayVolume() { + return playVolume; + } + + public PsdkSpeaker setPlayVolume(Integer playVolume) { + this.playVolume = playVolume; + return this; + } + + public Integer getSystemState() { + return systemState; + } + + public PsdkSpeaker setSystemState(Integer systemState) { + this.systemState = systemState; + return this; + } + + public Integer getWorkMode() { + return workMode; + } + + public PsdkSpeaker setWorkMode(Integer workMode) { + this.workMode = workMode; + return this; + } + + +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkUiResource.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkUiResource.java new file mode 100644 index 0000000..dd3236e --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkUiResource.java @@ -0,0 +1,56 @@ +package org.dromara.common.sdk.cloudapi.psdk; + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.dromara.common.sdk.common.BaseModel; + +/** + * @auther wuyuan + * @data 2025/3/29 + */ +public class PsdkUiResource { + + @JsonProperty("object_key") + private Integer objectKey; + + @JsonProperty("psdk_index") + private Integer psdkIndex; + + @JsonProperty("psdk_ready") + private Integer psdkReady; + + @Override + public String toString() { + return "PsdkWidgetValue{" + + "objectKey=" + objectKey + + ",psdkIndex=" + psdkIndex + + ",psdkReady=" + psdkReady + + '}'; + } + + public Integer getObjectKey() { + return objectKey; + } + + public PsdkUiResource setObjectKey(Integer objectKey) { + this.objectKey = objectKey; + return this; + } + + public Integer getPsdkIndex() { + return psdkIndex; + } + + public PsdkUiResource setPsdkIndex(Integer psdkIndex) { + this.psdkIndex = psdkIndex; + return this; + } + + public Integer getPsdkReady() { + return psdkReady; + } + + public PsdkUiResource setPsdkReady(Integer psdkReady) { + this.psdkReady = psdkReady; + return this; + } +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValue.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValue.java new file mode 100644 index 0000000..1de1384 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValue.java @@ -0,0 +1,119 @@ +package org.dromara.common.sdk.cloudapi.psdk; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import org.dromara.common.sdk.cloudapi.device.DockSilentMode; +import org.dromara.common.sdk.cloudapi.property.SilentModeEnum; +import org.dromara.common.sdk.common.BaseModel; + +import java.util.List; + +/** + * @auther wuyuan + * @data 2025/3/29 + */ +public class PsdkWidgetValue { + + @JsonProperty("psdk_index") + private Integer psdkIndex; + + @JsonProperty("psdk_lib_version") + private String psdkLibVersion; + + @JsonProperty("psdk_name") + private String psdkName; + + + + @JsonProperty("psdk_type") + private String psdkType; + + @JsonProperty("psdk_version") + private String psdkVersion; + + @JsonProperty("psdk_speaker") + private PsdkSpeaker psdkSpeaker; + + @JsonProperty("values") + private List values; + + public PsdkWidgetValue() { + } + + @Override + public String toString() { + return "PsdkWidgetValue{" + + "psdkIndex=" + psdkIndex + + ",psdkLibVersion=" + psdkLibVersion + + ",psdkName=" + psdkName + + ",psdkType=" + psdkType + + ",psdkVersion=" + psdkVersion + + ",psdkSpeaker=" + psdkSpeaker + + ",values=" + values + + '}'; + } + + + public Integer getPsdkIndex() { + return psdkIndex; + } + + public PsdkWidgetValue setPsdkIndex(Integer psdkIndex) { + this.psdkIndex = psdkIndex; + return this; + } + + public String getPsdkLibVersion() { + return psdkLibVersion; + } + + public PsdkWidgetValue setPsdkLibVersion(String psdkLibVersion) { + this.psdkLibVersion = psdkLibVersion; + return this; + } + + public String getPsdkName() { + return psdkName; + } + + public PsdkWidgetValue setPsdkName(String psdkName) { + this.psdkName = psdkName; + return this; + } + + public String getPsdkType() { + return psdkType; + } + + public PsdkWidgetValue setPsdkType(String psdkType) { + this.psdkType = psdkType; + return this; + } + + public String getPsdkVersion() { + return psdkVersion; + } + + public PsdkWidgetValue setPsdkVersion(String psdkVersion) { + this.psdkVersion = psdkVersion; + return this; + } + + public List getValues() { + return values; + } + + public PsdkWidgetValue setValues(List values) { + this.values = values; + return this; + } + + public PsdkSpeaker getPsdkSpeaker() { + return psdkSpeaker; + } + + public PsdkWidgetValue setPsdkSpeaker(PsdkSpeaker psdkSpeaker) { + this.psdkSpeaker = psdkSpeaker; + return this; + } +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValues.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValues.java new file mode 100644 index 0000000..40c43c3 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/psdk/PsdkWidgetValues.java @@ -0,0 +1,39 @@ +package org.dromara.common.sdk.cloudapi.psdk; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import org.dromara.common.sdk.cloudapi.device.DockPayloadControlSource; +import org.dromara.common.sdk.cloudapi.device.DockSilentMode; +import org.dromara.common.sdk.cloudapi.property.SilentModeEnum; +import org.dromara.common.sdk.common.BaseModel; + +import java.util.List; + +/** + * @auther wuyuan + * @data 2025/3/29 + */ +public class PsdkWidgetValues { + @JsonProperty("psdk_widget_values") + private List psdkWidgetValues; + + public PsdkWidgetValues() { + } + + @Override + public String toString() { + return "PsdkWidgetValues{" + + "psdkWidgetValues=" + psdkWidgetValues + + '}'; + } + + public List getPsdkWidgetValues() { + return psdkWidgetValues; + } + + public PsdkWidgetValues setPsdkWidgetValues(List psdkWidgetValues) { + this.psdkWidgetValues = psdkWidgetValues; + return this; + } + +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/AbstractWaylineService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/AbstractWaylineService.java index 1ea8229..1d4da03 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/AbstractWaylineService.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/AbstractWaylineService.java @@ -189,7 +189,7 @@ public abstract class AbstractWaylineService { */ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_RETURN_HOME_INFO, outputChannel = ChannelName.OUTBOUND_EVENTS) @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0) - public TopicRequestsResponse returnHomeInfo(TopicRequestsRequest request, MessageHeaders headers) { + public void returnHomeInfo(TopicRequestsRequest request, MessageHeaders headers) { throw new UnsupportedOperationException("returnHomeInfo not implemented"); } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/ChannelName.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/ChannelName.java index 58fb96e..3e45854 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/ChannelName.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/ChannelName.java @@ -67,6 +67,12 @@ public class ChannelName { public static final String INBOUND_STATE_DOCK_SILENT_MODE = "inboundStateDockSilentMode"; + public static final String INBOUND_STATE_DOCK_PSDK_WIDGE_VALUES = "inboundStateDockPsdkWidgetValues"; + + + public static final String INBOUND_STATE_DOCK_PSDK_UI_RESOURCE = "inboundStateDockPsdUiResource"; + + public static final String OUTBOUND_STATE = "outboundState"; @@ -146,6 +152,8 @@ public class ChannelName { public static final String INBOUND_EVENTS_CUSTOM_DATA_TRANSMISSION_FROM_PSDK = "inboundEventsCustomDataTransmissionFromPsdk"; + public static final String INBOUND_EVENTS_PSDK_FLOARUBF_WINDOW_TEXT = "inboundEventsPsdkFloatingWindowText"; + public static final String INBOUND_EVENTS_AIRSENSE_WARNING = "inboundEventsAirsenseWarning"; public static final String INBOUND_EVENTS_FLIGHT_AREAS_SYNC_PROGRESS = "inboundEventsFlightAreasSyncProgress"; diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/events/EventsMethodEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/events/EventsMethodEnum.java index 8d85540..0016fda 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/events/EventsMethodEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/events/EventsMethodEnum.java @@ -9,6 +9,7 @@ import org.dromara.common.sdk.cloudapi.flightarea.FlightAreasSyncProgress; import org.dromara.common.sdk.cloudapi.hms.Hms; import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionFromEsdk; import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionFromPsdk; +import org.dromara.common.sdk.cloudapi.interconnection.PsdkFloatingWindowTextPsdk; import org.dromara.common.sdk.cloudapi.log.FileUploadProgress; import org.dromara.common.sdk.cloudapi.map.OfflineMapSyncProgress; import org.dromara.common.sdk.cloudapi.media.FileUploadCallback; @@ -86,6 +87,10 @@ public enum EventsMethodEnum { CUSTOM_DATA_TRANSMISSION_FROM_PSDK("custom_data_transmission_from_psdk", ChannelName.INBOUND_EVENTS_CUSTOM_DATA_TRANSMISSION_FROM_PSDK, new TypeReference() {}), + PSDK_FLOARUBF_WINDOW_TEXT("psdk_floating_window_text", ChannelName.INBOUND_EVENTS_PSDK_FLOARUBF_WINDOW_TEXT, new TypeReference() {}), + + + AIRSENSE_WARNING("airsense_warning", ChannelName.INBOUND_EVENTS_AIRSENSE_WARNING, new TypeReference>() {}), FLIGHT_AREAS_SYNC_PROGRESS("flight_areas_sync_progress", ChannelName.INBOUND_EVENTS_FLIGHT_AREAS_SYNC_PROGRESS, new TypeReference() {}), diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/DockStateDataKeyEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/DockStateDataKeyEnum.java index 9dadfd9..39a2ad2 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/DockStateDataKeyEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/DockStateDataKeyEnum.java @@ -6,6 +6,8 @@ import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderFlightHeight; import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderModeLostAction; import org.dromara.common.sdk.cloudapi.property.DockDroneOfflineMapEnable; import org.dromara.common.sdk.cloudapi.property.DockDroneRthMode; +import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; +import org.dromara.common.sdk.cloudapi.psdk.PsdkWidgetValues; import org.dromara.common.sdk.exception.CloudSDKException; import java.util.Arrays; @@ -50,6 +52,9 @@ public enum DockStateDataKeyEnum { SILENT_MODE(Set.of("silent_mode"), DockSilentMode.class), + PSDK_WIDGE_VALUES(Set.of("psdk_widget_values"), PsdkWidgetValues.class), + + PSDK_UI_RESOURCE(Set.of("psdk_ui_resource"), PsdkUiResource.class), ; private final Set keys; diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateDataKeyEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateDataKeyEnum.java index 671c691..2f14f7f 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateDataKeyEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateDataKeyEnum.java @@ -7,6 +7,8 @@ import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderFlightHeight; import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderModeLostAction; import org.dromara.common.sdk.cloudapi.property.DockDroneOfflineMapEnable; import org.dromara.common.sdk.cloudapi.property.DockDroneRthMode; +import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; +import org.dromara.common.sdk.cloudapi.psdk.PsdkWidgetValues; import org.dromara.common.sdk.mqtt.ChannelName; import java.util.Arrays; @@ -59,6 +61,11 @@ public enum StateDataKeyEnum { DOCK_SILENT_MODE(ChannelName.INBOUND_STATE_DOCK_SILENT_MODE, DockSilentMode.class), + DOCK_PSDK_WIDGE_VALUES(ChannelName.INBOUND_STATE_DOCK_PSDK_WIDGE_VALUES, PsdkWidgetValues.class), + + DOCK_PSDK_UI_RESOURCE(ChannelName.INBOUND_STATE_DOCK_PSDK_UI_RESOURCE, PsdkUiResource.class), + + UNKNOWN(ChannelName.DEFAULT, Object.class); private final String channelName; diff --git a/dk-modules/sample/pom.xml b/dk-modules/sample/pom.xml index 4548b5d..bd050ec 100644 --- a/dk-modules/sample/pom.xml +++ b/dk-modules/sample/pom.xml @@ -131,6 +131,28 @@ aws-java-sdk-sts 1.12.261 + + org.springframework.boot + spring-boot-starter + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java index 54ef9ae..7e78d0b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/control/service/impl/ControlServiceImpl.java @@ -34,6 +34,9 @@ import java.util.Objects; import java.util.Optional; import java.util.UUID; +import static org.dromara.common.sdk.cloudapi.device.RcLostActionEnum.RETURN_HOME; +import static org.dromara.common.sdk.cloudapi.wayline.WaylineMethodEnum.RETURN_HOME_CANCEL; + /** * @author sean * @version 1.2 diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/InterconnectionService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/InterconnectionService.java new file mode 100644 index 0000000..4f3156c --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/InterconnectionService.java @@ -0,0 +1,26 @@ +package org.dromara.sample.manage.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionFromEsdk; +import org.dromara.common.sdk.cloudapi.interconnection.PsdkFloatingWindowTextPsdk; +import org.dromara.common.sdk.cloudapi.interconnection.api.AbstractInterconnectionService; +import org.dromara.common.sdk.mqtt.events.TopicEventsRequest; +import org.springframework.messaging.MessageHeaders; +import org.springframework.stereotype.Service; + +/** + * @auther wuyuan + * @data 2025/3/29 + */ +@Service +@Slf4j +public class InterconnectionService extends AbstractInterconnectionService { + + public void customDataTransmissionFromPsdk(TopicEventsRequest request, MessageHeaders headers) { + log.info(request.toString()); + } + + public void psdkFloatingWindowText(TopicEventsRequest request, MessageHeaders headers) { + log.info(request.toString()); + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index a6ad008..49765c0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -2,6 +2,8 @@ package org.dromara.sample.manage.service.impl; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.device.api.AbstractDeviceService; +import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; +import org.dromara.common.sdk.cloudapi.psdk.PsdkWidgetValues; import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; import org.dromara.common.sdk.cloudapi.tsa.IconUrlEnum; import org.dromara.common.sdk.common.SDKManager; @@ -360,6 +362,16 @@ public class SDKDeviceService extends AbstractDeviceService { .build()).collect(Collectors.toList())); } + @Override + public void dockPsdkUiResource(TopicStateRequest request, MessageHeaders headers){ + log.info(request.toString()); + } + + @Override + public void dockPsdkWidgetValues(TopicStateRequest request, MessageHeaders headers){ + log.info(request.toString()); + } + private void dockGoOnline(DeviceDTO gateway, DeviceDTO subDevice) { if (DeviceDomainEnum.DOCK != gateway.getDomain()) { return; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaFileServiceImpl.java index 3cd911b..c3165d8 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaFileServiceImpl.java @@ -17,6 +17,8 @@ import org.dromara.sample.map.service.IWorkspaceElementService; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.codec.digest.DigestUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +41,7 @@ import java.util.stream.Collectors; @Transactional public class FlightAreaFileServiceImpl implements IFlightAreaFileService { + private static final Logger log = LoggerFactory.getLogger(FlightAreaFileServiceImpl.class); @Autowired private IFlightAreaFileMapper mapper; @@ -101,7 +104,6 @@ public class FlightAreaFileServiceImpl implements IFlightAreaFileService { } private FlightAreaFileDTO generateFlightAreaFile(String workspaceId, List flightAreas) { - FlightAreaJson flightAreaJson = new FlightAreaJson() .setFeatures(flightAreas.stream() .map(this::generateFlightAreaFeature) @@ -117,6 +119,7 @@ public class FlightAreaFileServiceImpl implements IFlightAreaFileService { } is.reset(); OssClient storage = OssFactory.instance("flightareafile"); + log.info(is.toString()+"==========================="+name+"======================"+length); storage.uploadSuffix(is,name,length,"json"); return FlightAreaFileDTO.builder() .name(name) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java index 3189b6a..d974a41 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java @@ -171,6 +171,9 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements @Override public FlightAreaFileDTO packageFlightArea(String workspaceId) { List flightAreas = getFlightAreaList(workspaceId); + if(flightAreas.size() == 0){ + return null; + } return flightAreaFileService.packageFlightAreaFile(workspaceId, flightAreas); } @@ -296,6 +299,9 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements FlightAreaFileDTO file = fileOpt.orElse(null); if (flightAreaOpt.isEmpty() || fileOpt.isEmpty()) { file = packageFlightArea(device.getWorkspaceId()); + if(file == null){ + return null; + } } OssClient storage = OssFactory.instance("flightareafile"); return new TopicRequestsResponse>().setData( diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java index b94a0f7..95ecd26 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/FlightTaskServiceImpl.java @@ -13,6 +13,7 @@ import org.dromara.common.sdk.common.SDKManager; import org.dromara.common.sdk.mqtt.MqttReply; import org.dromara.common.sdk.mqtt.events.TopicEventsRequest; import org.dromara.common.sdk.mqtt.events.TopicEventsResponse; +import org.dromara.common.sdk.mqtt.requests.TopicRequestsRequest; import org.dromara.common.sdk.mqtt.services.ServicesReplyData; import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; import org.dromara.sample.common.error.CommonErrorEnum; @@ -184,6 +185,10 @@ public class FlightTaskServiceImpl extends AbstractWaylineService implements IFl } + public void returnHomeInfo(TopicRequestsRequest request, MessageHeaders headers) { + log.info(request.toString()); + } + /** * For immediate tasks, the server time shall prevail. * @param param diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index d228af7..0ed105b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -198,6 +198,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService { OssClient storage = OssFactory.instance("waylinefile"); String originalfileName = file.getOriginalFilename(); String suffix = org.apache.commons.lang3.StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); + suffix = "waylinefile/"+suffix; UploadResult uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); waylineFile.setObjectKey(uploadResult.getFilename()); List deviceSns = new ArrayList<>(); diff --git a/dk-visual/nacos/src/main/resources/application.properties b/dk-visual/nacos/src/main/resources/application.properties index 44fe8a3..431e2e7 100644 --- a/dk-visual/nacos/src/main/resources/application.properties +++ b/dk-visual/nacos/src/main/resources/application.properties @@ -40,9 +40,9 @@ spring.sql.init.platform=mysql db.num=1 ### Connect URL of DB: -db.url.0=jdbc:mysql://114.235.183.147:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true +db.url.0=jdbc:mysql://127.0.0.1:3307/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root -db.password.0=dkcy@yf +db.password.0=123456 ### the maximum retry times for push nacos.config.push.maxRetryTime=50 diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/RocketMQApplication.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/RocketMQApplication.java deleted file mode 100644 index 4ec745a..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/RocketMQApplication.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ruoyi.testrocketmq; - -import com.ruoyi.common.security.annotation.EnableCustomConfig; -import com.ruoyi.common.security.annotation.EnableRyFeignClients; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; - -/** - * 平台管理模块 - * - * @author ruoyi - */ -@EnableCustomConfig -@EnableRyFeignClients -@SpringBootApplication -@EnableAsync -public class RocketMQApplication -{ - public static void main(String[] args) - { - SpringApplication.run(RocketMQApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ RocketMQ模块启动成功 ლ(´ڡ`ლ)゙"); - } -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ConsumerConfig.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ConsumerConfig.java deleted file mode 100644 index 38ebbae..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ConsumerConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.ruoyi.testrocketmq.config; - -import com.ruoyi.testrocketmq.consumer.RocketMsgListener; -import com.ruoyi.testrocketmq.enums.MessageCodeEnum; -import com.ruoyi.testrocketmq.model.ConsumerMode; -import lombok.extern.slf4j.Slf4j; -import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; -import org.apache.rocketmq.client.exception.MQClientException; -import org.apache.rocketmq.common.consumer.ConsumeFromWhere; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 消费者配置 - */ -@RefreshScope -@Configuration -@Slf4j -public class ConsumerConfig { - @Autowired - private ConsumerMode consumerMode; - - @Bean - public DefaultMQPushConsumer getRocketMQConsumer() throws MQClientException { -// ConsumerMode consumerMode = new ConsumerMode(); - DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(consumerMode.getGroupName()); - consumer.setNamesrvAddr(consumerMode.getNamesrvAddr()); - consumer.setConsumeThreadMin(consumerMode.getConsumeThreadMin()); - consumer.setConsumeThreadMax(consumerMode.getConsumeThreadMax()); - consumer.registerMessageListener(new RocketMsgListener()); - /** - * 1. CONSUME_FROM_LAST_OFFSET:第一次启动从队列最后位置消费,后续再启动接着上次消费的进度开始消费 - * 2. CONSUME_FROM_FIRST_OFFSET:第一次启动从队列初始位置消费,后续再启动接着上次消费的进度开始消费 - * 3. CONSUME_FROM_TIMESTAMP:第一次启动从指定时间点位置消费,后续再启动接着上次消费的进度开始消费 - * 以上所说的第一次启动是指从来没有消费过的消费者,如果该消费者消费过,那么会在broker端记录该消费者的消费位置,如果该消费者挂了再启动,那么自动从上次消费的进度开始 - */ - consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); - /** - * CLUSTERING (集群模式) :默认模式,同一个ConsumerGroup(groupName相同)每个consumer只消费所订阅消息的一部分内容,同一个ConsumerGroup里所有的Consumer消息加起来才是所 - * 订阅topic整体,从而达到负载均衡的目的 - * BROADCASTING (广播模式) :同一个ConsumerGroup每个consumer都消费到所订阅topic所有消息,也就是一个消费会被多次分发,被多个consumer消费。 - * - */ - // consumer.setMessageModel(MessageModel.BROADCASTING); - - consumer.setVipChannelEnabled(false); - consumer.setConsumeMessageBatchMaxSize(consumerMode.getConsumeMessageBatchMaxSize()); - try { - /** - * 订阅topic,可以对指定消息进行过滤,例如:"TopicTest","tagl||tag2||tag3",*或null表示topic所有消息 - */ - consumer.subscribe(MessageCodeEnum.ORDER_MESSAGE.getCode(),"*"); - consumer.subscribe(MessageCodeEnum.USER_MESSAGE.getCode(),"*"); - consumer.start(); - log.info("消费者初始化成功:{}", consumer.toString()); - } catch (MQClientException e) { - e.printStackTrace(); - log.error("消费者初始化失败:{}",e.getMessage()); - } - return consumer; - } -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/MessageConfig.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/MessageConfig.java deleted file mode 100644 index 1d4b56e..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/MessageConfig.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ruoyi.testrocketmq.config; - -/** - * @author yz - */ -public class MessageConfig { - private Class messageClass; - private boolean orderlyMessage; - - public Class getMessageClass() { - return messageClass; - } - - public void setMessageClass(Class messageClass) { - this.messageClass = messageClass; - } - - public boolean isOrderlyMessage() { - return orderlyMessage; - } - - public void setOrderlyMessage(boolean orderlyMessage) { - this.orderlyMessage = orderlyMessage; - } - - -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ProducerConfig.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ProducerConfig.java deleted file mode 100644 index b55917e..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/config/ProducerConfig.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ruoyi.testrocketmq.config; - -import com.ruoyi.testrocketmq.model.ProducerMode; -import lombok.extern.slf4j.Slf4j; -import org.apache.rocketmq.client.exception.MQClientException; -import org.apache.rocketmq.client.producer.DefaultMQProducer; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - - -@Configuration -@Slf4j -public class ProducerConfig { - - public static DefaultMQProducer producer; - - @Autowired - private ProducerMode producerMode; - - - - @Bean - public DefaultMQProducer getRocketMQProducer() { - producer = new DefaultMQProducer(producerMode.getGroupName()); - producer.setNamesrvAddr(producerMode.getNamesrvAddr()); - //如果需要同一个jvm中不同的producer往不同的mq集群发送消息,需要设置不同的instanceName - if(producerMode.getMaxMessageSize()!=null){ - producer.setMaxMessageSize(producerMode.getMaxMessageSize()); - } - if(producerMode.getSendMsgTimeout()!=null){ - producer.setSendMsgTimeout(producerMode.getSendMsgTimeout()); - } - //如果发送消息失败,设置重试次数,默认为2次 - if(producerMode.getRetryTimesWhenSendFailed()!=null){ - producer.setRetryTimesWhenSendFailed(producerMode.getRetryTimesWhenSendFailed()); - } - producer.setVipChannelEnabled(false); - try { - producer.start(); - log.info("生产者初始化成功:{}",producer.toString()); - } catch (MQClientException e) { - log.error("生产者初始化失败:{}",e.getMessage()); - } - return producer; - } - -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/consumer/RocketMsgListener.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/consumer/RocketMsgListener.java deleted file mode 100644 index 88d2b05..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/consumer/RocketMsgListener.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.ruoyi.testrocketmq.consumer; - -import com.ruoyi.testrocketmq.enums.MessageCodeEnum; -import com.ruoyi.testrocketmq.producer.ConsumeException; -import lombok.extern.slf4j.Slf4j; -import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; -import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; -import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; -import org.apache.rocketmq.common.message.MessageExt; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.io.UnsupportedEncodingException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -/** - * 消息监听 - */ -@Slf4j -@Component -public class RocketMsgListener implements MessageListenerConcurrently { - - /** - * 消费消息 - * - * @param list msgs.size() >= 1 - * DefaultMQPushConsumer.consumeMessageBatchMaxSize=1,you can modify here - * 这里只设置为1,当设置为多个时,list中只要有一条消息消费失败,就会整体重试 - * @param consumeConcurrentlyContext 上下文信息 - * @return 消费状态 成功(CONSUME_SUCCESS)或者 重试 (RECONSUME_LATER) - */ - @Override - public ConsumeConcurrentlyStatus consumeMessage(List list, ConsumeConcurrentlyContext consumeConcurrentlyContext) { - - if (!CollectionUtils.isEmpty(list)) { - for (MessageExt messageExt : list) { - // 消息内容 - String body = new String(messageExt.getBody()); - log.info("接受到的消息为:{}", body); - String tags = messageExt.getTags(); - String topic = messageExt.getTopic(); - String msgId = messageExt.getMsgId(); - String keys = messageExt.getKeys(); - int reConsume = messageExt.getReconsumeTimes(); - // 消息已经重试了3次,如果不需要再次消费,则返回成功 - if (reConsume == 3) { - // TODO 补偿信息 - //smsLogService.insertLog(topic, tags, msgId, keys, body, "【" + EnumUtil.getStrMsgByCode(tags, TagsCodeEnum.class) + "】消费失败"); - log.error("消息重试超过3次,消费失败!"); - return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; - } - // 订单超时处理 - if (MessageCodeEnum.ORDER_MESSAGE.getCode().equals(topic)) { - if (MessageCodeEnum.ORDER_TIMEOUT_TAG.getCode().equals(tags)) { -// //获取订单 -// DealUserOrder dealUserOrder = pcRemoteDealUserOrderService.selectDealUserOrderByOrderNumber(keys); -// if (dealUserOrder != null) { -// //订单状态超时未支付关闭订单 处理 -// if (dealUserOrder.getStatus().equals("1")) { -// DealUserOrder dealUserOrders = new DealUserOrder(); -// dealUserOrders.setOrderId(dealUserOrder.getOrderId()); -// dealUserOrders.setStatus("4"); -// pcRemoteDealUserOrderService.updateDealUserOrder(dealUserOrders); -// return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; -// } -// log.info("Order does not exist."); -// } - log.info("Consumption success:" + body); - DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - log.info("Consumption time:{}", format.format(new Date())); - } else { - log.info("未匹配到Tag【{}】" + tags); - } - } - } - } - // 消息消费成功 - //ConsumeConcurrentlyStatus.RECONSUME_LATER broker会根据设置的messageDelayLevel发起重试,默认16次 - return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; - } - - /** - * 异常处理 - * - * @param e 捕获的异常 - * @return 消息消费结果 - */ - private static ConsumeConcurrentlyStatus handleException(final Exception e) { - Class exceptionClass = e.getClass(); - if (exceptionClass.equals(UnsupportedEncodingException.class)) { - log.error(e.getMessage()); - } else if (exceptionClass.equals(ConsumeException.class)) { - log.error(e.getMessage()); - } - return ConsumeConcurrentlyStatus.RECONSUME_LATER; - } -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/enums/MessageCodeEnum.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/enums/MessageCodeEnum.java deleted file mode 100644 index e6ff8c4..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/enums/MessageCodeEnum.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ruoyi.testrocketmq.enums; - - -import lombok.Getter; - -@Getter -public enum MessageCodeEnum { - /** - * 消息模块主题 - */ - MESSAGE_TOPIC("elink-message","消息服务模块topic名称"), - /** - * 系统消息 - */ - NOTE_MESSAGE("system-message","系统消息服务模块topic名称"), - /** - * 用户消息 - */ - USER_MESSAGE("user-message","用户消息服务模块topic名称"), - - /** - * 订单消息 - */ - ORDER_MESSAGE("order-message","订单消息服务模块topic名称"), - - /** - * 平台编号 - */ - USER_MESSAGE_TAG("user_message_tag","用户消息推送"), - NOTE_MESSAGE_TAG("system_message_tag","系统消息推送"), - ORDER_MESSAGE_TAG("order_message_tag","订单消息推送"), - - /** - * 订单处理编号 - */ - //订单超时处理 - ORDER_TIMEOUT_TAG("order_timeout_tag","订单超时处理"); - - - private final String code; - private final String msg; - - MessageCodeEnum(String code, String msg){ - this.code = code; - this.msg = msg; - } - - public static String valuesOfType(String code) { - String value = ""; - for (MessageCodeEnum e : MessageCodeEnum.values()) { - if (code.equals(e.code)) { - value = e.msg; - } - - } - return value; - } - - -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ConsumerMode.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ConsumerMode.java deleted file mode 100644 index e66738a..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ConsumerMode.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.testrocketmq.model; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.stereotype.Component; - -@Data -@Configuration -@Component -public class ConsumerMode { - @Value("${suning.rocketmq.namesrvAddr}") - private String namesrvAddr; - @Value("${suning.rocketmq.conumer.groupName}") - private String groupName ; - @Value("${suning.rocketmq.conumer.consumeThreadMin}") - private int consumeThreadMin; - @Value("${suning.rocketmq.conumer.consumeThreadMax}") - private int consumeThreadMax; - @Value("${suning.rocketmq.conumer.consumeMessageBatchMaxSize}") - private int consumeMessageBatchMaxSize; -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ProducerMode.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ProducerMode.java deleted file mode 100644 index 0cd4060..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/model/ProducerMode.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ruoyi.testrocketmq.model; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Configuration; - -/** - * 生产者初始化 - */ -@RefreshScope -@Data -@Configuration -public class ProducerMode { - @Value("${suning.rocketmq.producer.groupName}") - private String groupName; - @Value("${suning.rocketmq.namesrvAddr}") - private String namesrvAddr; - @Value("${suning.rocketmq.producer.maxMessageSize}") - private Integer maxMessageSize; - @Value("${suning.rocketmq.producer.sendMsgTimeout}") - private Integer sendMsgTimeout; - @Value("${suning.rocketmq.producer.retryTimesWhenSendFailed}") - private Integer retryTimesWhenSendFailed; -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/AsyncProducer.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/AsyncProducer.java deleted file mode 100644 index 86ed05c..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/AsyncProducer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ruoyi.testrocketmq.producer; - -import com.ruoyi.testrocketmq.config.ProducerConfig; -import org.springframework.beans.factory.annotation.Autowired; - -public class AsyncProducer { - - @Autowired - private ProducerConfig producerConfig; - - /** - * 发送异步的消息 - * @param topic 主题 - * @param tag 标签 - * @param key 自定义的key,根据业务来定 - * @param value 消息的内容 - * @return org.apache.rocketmq.client.producer.SendResult - */ -// public SendResult sendAsyncProducerMessage(String topic, String tag, String key, String value) throws UnsupportedEncodingException { -// -// try { -// DefaultMQProducer defaultMQProducer = producerConfig.producer; -// //Create a message instance, specifying topic, tag and message body. -// Message msg = new Message(topic, tag, key,value.getBytes(RemotingHelper.DEFAULT_CHARSET)); -// defaultMQProducer.send(msg, new SendCallback() { -// // 异步回调的处理 -// @Override -// public void onSuccess(SendResult sendResult) { -// System.out.printf("%-10d 异步发送消息成功 %s %n", msg, sendResult.getMsgId()); -// } -// -// @Override -// public void onException(Throwable e) { -// System.out.printf("%-10d 异步发送消息失败 %s %n", msg, e); -// e.printStackTrace(); -// } -// }); -// } catch (MQClientException e) { -// e.printStackTrace(); -// } catch (RemotingException e) { -// e.printStackTrace(); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// return null; -// } -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/ConsumeException.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/ConsumeException.java deleted file mode 100644 index 82d4314..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/ConsumeException.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ruoyi.testrocketmq.producer; - -/** - * @author 影子 - */ -public class ConsumeException extends RuntimeException{ - private static final long serialVersionUID = 4093867789628938836L; - - public ConsumeException(String message) { - super(message); - } - - public ConsumeException(Throwable cause) { - super(cause); - } - - public ConsumeException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageContext.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageContext.java deleted file mode 100644 index fa6afbe..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageContext.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ruoyi.testrocketmq.producer; - - - -import lombok.Data; -import lombok.ToString; -import org.apache.rocketmq.common.message.MessageExt; -import org.apache.rocketmq.common.message.MessageQueue; - -/** - * 消费时,当前所消费的消息的上下文信息 - * - * @author jolly - */ -@ToString -@Data -public final class MessageContext { - - /** - * 所消费消息所在的消息队列 - * - * @see MessageQueue - */ - private MessageQueue messageQueue; - - /** - * 所消费的消息的扩展属性 - * - * @see MessageExt - */ - private MessageExt messageExt; - - -} diff --git a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageProducer.java b/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageProducer.java deleted file mode 100644 index 7450530..0000000 --- a/dk-visual/rocketmq/src/test/java/com/ruoyi/testrocketmq/producer/MessageProducer.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.ruoyi.testrocketmq.producer; - -import com.alibaba.fastjson.JSON; -import lombok.extern.slf4j.Slf4j; -import org.apache.rocketmq.client.exception.MQBrokerException; -import org.apache.rocketmq.client.exception.MQClientException; -import org.apache.rocketmq.client.producer.SendResult; -import org.apache.rocketmq.common.message.Message; -import org.apache.rocketmq.remoting.common.RemotingHelper; -import org.apache.rocketmq.remoting.exception.RemotingException; - -import java.io.UnsupportedEncodingException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -import static com.ruoyi.rocketmq.config.ProducerConfig.producer; - -/** - * 消息发送 - */ -@Slf4j -public class MessageProducer { - - - /** - * 同步发送消息 - * @param topic 主题 - * @param tag 标签 - * @param key 自定义的key,根据业务来定 - * @param value 消息的内容 - * @return org.apache.rocketmq.client.producer.SendResult - */ - public SendResult sendSynchronizeMessage(String topic, String tag, String key, String value){ - String body = "topic:【"+topic+"】, tag:【"+tag+"】, key:【"+key+"】, value:【"+value+"】"; - try { - Message msg = new Message(topic,tag,key, value.getBytes(RemotingHelper.DEFAULT_CHARSET)); - System.out.println("生产者发送消息:"+ JSON.toJSONString(value)); - SendResult result = producer.send(msg); - return result; - } catch (UnsupportedEncodingException e) { - log.error("消息初始化失败!body:{}",body); - - } catch (MQClientException | InterruptedException | RemotingException | MQBrokerException e) { - log.error("消息发送失败! body:{}",body); - } - return null; - } - - - - /** - * 发送有序的消息 - * @param messagesList Message集合 - * @param messageQueueNumber 消息队列编号 - * @return org.apache.rocketmq.client.producer.SendResult - */ - public SendResult sendOrderlyMessage(List messagesList, int messageQueueNumber) { - SendResult result = null; - for (Message message : messagesList) { - try { -// DefaultMQProducer defaultMQProducer = ProducerConfig.producer.send(message); -// System.out.println(defaultMQProducer); - result = producer.send(message, (list, msg, arg) -> { - Integer queueNumber = (Integer) arg; - return list.get(queueNumber); - }, messageQueueNumber); - } catch (MQClientException | RemotingException | MQBrokerException | InterruptedException e) { - log.error("发送有序消息失败"); - return result; - } - } - return result; - } - - /** - * 推送延迟消息 - * @param topic - * @param tag - * @param key - * @return boolean - */ - public SendResult sendDelayMessage(String topic, String tag, String key, String value) - { - SendResult result = null; - try - { - Message msg = new Message(topic,tag,key, value.getBytes(RemotingHelper.DEFAULT_CHARSET)); - //设置消息延迟级别,我这里设置5,对应就是延时一分钟 - // "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h" - msg.setDelayTimeLevel(4); - // 发送消息到一个Broker - result = producer.send(msg); - // 通过sendResult返回消息是否成功送达 - log.info("发送延迟消息结果:======sendResult:{}", result); - DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - log.info("发送时间:{}", format.format(new Date())); - return result; - } - catch (Exception e) - { - e.printStackTrace(); - log.error("延迟消息队列推送消息异常:{},推送内容:{}", e.getMessage(), result); - } - return result; - } - - -}