From fd4184b1d812cefef6c1aa94ed59ba217b0469a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 25 Apr 2023 21:50:14 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dretain=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=BC=96=E7=A0=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mqtt/broker/BrokerContextImpl.java | 10 +++- .../broker/processor/MqttAckProcessor.java | 4 +- .../org/smartboot/mqtt/common/QosMessage.java | 47 ------------------- 3 files changed, 11 insertions(+), 50 deletions(-) delete mode 100644 smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/QosMessage.java diff --git a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerContextImpl.java b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerContextImpl.java index 8b84a61b..f195c0d5 100644 --- a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerContextImpl.java +++ b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerContextImpl.java @@ -29,6 +29,7 @@ import org.smartboot.mqtt.common.AsyncTask; import org.smartboot.mqtt.common.InflightQueue; import org.smartboot.mqtt.common.QosRetryPlugin; import org.smartboot.mqtt.common.enums.MqttMetricEnum; +import org.smartboot.mqtt.common.enums.MqttQoS; import org.smartboot.mqtt.common.enums.MqttVersion; import org.smartboot.mqtt.common.eventbus.EventBus; import org.smartboot.mqtt.common.eventbus.EventBusImpl; @@ -367,8 +368,15 @@ public class BrokerContextImpl implements BrokerContext { if (session.getMqttVersion() == MqttVersion.MQTT_5) { publishBuilder.publishProperties(new PublishProperties()); } - InflightQueue inflightQueue = session.getInflightQueue(); long offset = storedMessage.getOffset(); + // Qos0不走飞行窗口 + if (subscriber.getMqttQoS() == MqttQoS.AT_MOST_ONCE) { + subscriber.setRetainConsumerOffset(offset + 1); + session.write(publishBuilder.build()); + retainPushThreadPool.execute(task); + return; + } + InflightQueue inflightQueue = session.getInflightQueue(); // retain消息逐个推送 inflightQueue.offer(publishBuilder, (mqtt) -> { LOGGER.info("publish retain to client:{} success ", session.getClientId()); diff --git a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/processor/MqttAckProcessor.java b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/processor/MqttAckProcessor.java index 6196f641..d353df68 100644 --- a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/processor/MqttAckProcessor.java +++ b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/processor/MqttAckProcessor.java @@ -12,13 +12,13 @@ package org.smartboot.mqtt.broker.processor; import org.smartboot.mqtt.broker.BrokerContext; import org.smartboot.mqtt.broker.MqttSession; -import org.smartboot.mqtt.common.message.MqttPacketIdentifierMessage; +import org.smartboot.mqtt.common.message.MqttPubQosMessage; /** * @author 三刀(zhengjunweimail@163.com) * @version V1.0 , 2022/4/15 */ -public class MqttAckProcessor extends AuthorizedMqttProcessor { +public class MqttAckProcessor extends AuthorizedMqttProcessor { @Override public void process0(BrokerContext context, MqttSession session, T t) { session.getInflightQueue().notify(t); diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/QosMessage.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/QosMessage.java deleted file mode 100644 index fde98f7a..00000000 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/QosMessage.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] - * - * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 - * - * Enterprise users are required to use this project reasonably - * and legally in accordance with the AGPL-3.0 open source agreement - * without special permission from the smartboot organization. - */ - -package org.smartboot.mqtt.common; - -import org.smartboot.mqtt.common.message.MqttPacketIdentifierMessage; -import org.smartboot.mqtt.common.message.variable.MqttPacketIdVariableHeader; - -import java.util.function.Consumer; - -/** - * @author 三刀(zhengjunweimail@163.com) - * @version V1.0 , 2023/3/27 - */ -public class QosMessage { - private final MqttPacketIdentifierMessage message; - private final Consumer> consumer; - private boolean commit; - - public QosMessage(MqttPacketIdentifierMessage message, Consumer> consumer) { - this.message = message; - this.consumer = consumer; - } - - public MqttPacketIdentifierMessage getMessage() { - return message; - } - - public Consumer> getConsumer() { - return consumer; - } - - public boolean isCommit() { - return commit; - } - - public void setCommit(boolean commit) { - this.commit = commit; - } -} -- Gitee From 27c1911ee47eee6547b2b905c2cd36d2d09653b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Fri, 28 Apr 2023 19:16:59 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E6=8F=90=E5=8D=87=E7=BC=96=E8=A7=A3?= =?UTF-8?q?=E7=A0=81=E7=A8=B3=E5=AE=9A=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../broker/MqttBrokerMessageProcessor.java | 3 +++ .../mqtt/common/DefaultMqttWriter.java | 24 ++++++++++++++++++- .../org/smartboot/mqtt/common/MqttWriter.java | 4 ++++ .../mqtt/common/message/MqttMessage.java | 6 ++++- .../mqtt/common/protocol/MqttProtocol.java | 14 ++++------- 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/MqttBrokerMessageProcessor.java b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/MqttBrokerMessageProcessor.java index e0239b09..d781f8b1 100644 --- a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/MqttBrokerMessageProcessor.java +++ b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/MqttBrokerMessageProcessor.java @@ -96,6 +96,9 @@ public class MqttBrokerMessageProcessor extends AbstractMessageProcessor 1024) { + System.out.println("aaaaaaa"); + } } @Override public void flush() { writeBuffer.flush(); } + + @Override + public int writeSize() { + return size; + } } diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/MqttWriter.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/MqttWriter.java index 025d0e30..c99e7ac4 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/MqttWriter.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/MqttWriter.java @@ -17,6 +17,8 @@ import java.io.IOException; * @version V1.0 , 2022/12/2 */ public interface MqttWriter { + void reset(); + void writeByte(byte b); void writeShort(short data) throws IOException; @@ -26,4 +28,6 @@ public interface MqttWriter { void write(byte[] data) throws IOException; void flush(); + + int writeSize(); } diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttMessage.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttMessage.java index fc34070b..d28c744e 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttMessage.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttMessage.java @@ -14,6 +14,7 @@ import org.smartboot.mqtt.common.MqttWriter; import org.smartboot.mqtt.common.ToString; import org.smartboot.mqtt.common.enums.MqttVersion; import org.smartboot.mqtt.common.message.payload.MqttPayload; +import org.smartboot.mqtt.common.util.ValidateUtils; import org.smartboot.socket.util.DecoderException; import java.io.IOException; @@ -67,6 +68,7 @@ public abstract class MqttMessage extends ToString { } public final void write(MqttWriter mqttWriter) throws IOException { + ValidateUtils.isTrue(mqttWriter.writeSize() == 0, "invlid write size"); MqttCodecUtil.writeFixedHeader(mqttWriter, getFixedHeader()); MqttVariableHeader variableHeader = getVariableHeader(); MqttPayload mqttPayload = getPayload(); @@ -75,12 +77,14 @@ public abstract class MqttMessage extends ToString { //第一部分:固定报头 MqttCodecUtil.writeVariableLengthInt(mqttWriter, remainingLength); - + int size = mqttWriter.writeSize(); //第二部分:可变报头 variableHeader.writeTo(mqttWriter); //第三部分:有效载荷 mqttPayload.writeTo(mqttWriter); + ValidateUtils.isTrue((mqttWriter.writeSize() - size) == remainingLength, "encode error"); + mqttWriter.reset(); } public abstract MqttVariableHeader getVariableHeader(); diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/protocol/MqttProtocol.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/protocol/MqttProtocol.java index b5f1dd8c..47769341 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/protocol/MqttProtocol.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/protocol/MqttProtocol.java @@ -132,20 +132,16 @@ public class MqttProtocol implements Protocol { if (payloadBuffer.remaining() < remainingLength) { break; } + int p = payloadBuffer.position(); unit.mqttMessage.decodeVariableHeader(payloadBuffer); - unit.state = READ_PAYLOAD; - - // fall through - } - - case READ_PAYLOAD: { if (unit.disposableBuffer == null) { - unit.mqttMessage.decodePlayLoad(buffer); + unit.mqttMessage.decodePlayLoad(payloadBuffer); + ValidateUtils.isTrue((payloadBuffer.position() - p) == remainingLength, "Payload size is wrong"); } else { - unit.mqttMessage.decodePlayLoad(unit.disposableBuffer); - ValidateUtils.isTrue(unit.disposableBuffer.remaining() == 0, "decode error"); + unit.mqttMessage.decodePlayLoad(payloadBuffer); + ValidateUtils.isTrue(payloadBuffer.remaining() == 0, "decode error"); unit.disposableBuffer = null; } unit.state = FINISH; -- Gitee From b6eb8cf9731891dfcb14ab01e967fc0289af07ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Fri, 28 Apr 2023 22:48:23 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E7=B2=BE=E7=AE=80=E5=86=85=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/smartboot/mqtt/common/InflightQueue.java | 15 ++++++++------- .../mqtt/common/message/MqttFixedHeader.java | 9 ++++----- .../mqtt/common/message/MqttPubRelMessage.java | 4 ++-- .../mqtt/common/util/MqttMessageBuilders.java | 15 ++++++++++++++- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/InflightQueue.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/InflightQueue.java index 992eac6e..efb4f189 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/InflightQueue.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/InflightQueue.java @@ -14,9 +14,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.smartboot.mqtt.common.enums.MqttMessageType; import org.smartboot.mqtt.common.enums.MqttVersion; -import org.smartboot.mqtt.common.message.MqttMessage; +import org.smartboot.mqtt.common.message.MqttFixedHeader; import org.smartboot.mqtt.common.message.MqttPacketIdentifierMessage; import org.smartboot.mqtt.common.message.MqttPubRelMessage; +import org.smartboot.mqtt.common.message.MqttPublishMessage; import org.smartboot.mqtt.common.message.MqttVariableMessage; import org.smartboot.mqtt.common.message.variable.MqttPacketIdVariableHeader; import org.smartboot.mqtt.common.message.variable.MqttPubQosVariableHeader; @@ -121,9 +122,10 @@ public class InflightQueue { switch (inflightMessage.getExpectMessageType()) { case PUBACK: case PUBREC: - MqttMessage mqttMessage = inflightMessage.getOriginalMessage(); - mqttMessage.getFixedHeader().setDup(true); - session.write(mqttMessage); + MqttPublishMessage mqttMessage = (MqttPublishMessage) inflightMessage.getOriginalMessage(); + MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(mqttMessage.getFixedHeader().getMessageType(), true, mqttMessage.getFixedHeader().getQosLevel(), mqttMessage.getFixedHeader().isRetain()); + MqttPublishMessage dupMessage = new MqttPublishMessage(mqttFixedHeader, mqttMessage.getVariableHeader(), mqttMessage.getPayload().getPayload()); + session.write(dupMessage); break; case PUBCOMP: ReasonProperties properties = null; @@ -132,8 +134,7 @@ public class InflightQueue { } MqttVariableMessage message = inflightMessage.getOriginalMessage(); MqttPubQosVariableHeader variableHeader = new MqttPubQosVariableHeader(message.getVariableHeader().getPacketId(), properties); - MqttPubRelMessage pubRelMessage = new MqttPubRelMessage(variableHeader); - pubRelMessage.getFixedHeader().setDup(true); + MqttPubRelMessage pubRelMessage = new MqttPubRelMessage(MqttFixedHeader.PUB_REL_HEADER_DUP, variableHeader); session.write(pubRelMessage); break; default: @@ -180,7 +181,7 @@ public class InflightQueue { properties = new ReasonProperties(); } MqttPubQosVariableHeader variableHeader = new MqttPubQosVariableHeader(message.getVariableHeader().getPacketId(), properties); - MqttPubRelMessage pubRelMessage = new MqttPubRelMessage(variableHeader); + MqttPubRelMessage pubRelMessage = new MqttPubRelMessage(MqttFixedHeader.PUB_REL_HEADER, variableHeader); session.write(pubRelMessage, false); break; default: diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttFixedHeader.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttFixedHeader.java index cf0c3a35..7f240aa4 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttFixedHeader.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttFixedHeader.java @@ -49,8 +49,11 @@ public class MqttFixedHeader extends ToString { public static final MqttFixedHeader DISCONNECT_HEADER = new MqttFixedHeader(MqttMessageType.DISCONNECT, MqttQoS.AT_MOST_ONCE); public static final MqttFixedHeader PUB_QOS0_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_MOST_ONCE, false); + public static final MqttFixedHeader PUB_RETAIN_QOS0_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_MOST_ONCE, true); public static final MqttFixedHeader PUB_QOS1_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, false); + public static final MqttFixedHeader PUB_RETAIN_QOS1_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, true); public static final MqttFixedHeader PUB_QOS2_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.EXACTLY_ONCE, false); + public static final MqttFixedHeader PUB_RETAIN_QOS2_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.EXACTLY_ONCE, true); public static final MqttFixedHeader PUB_FAILURE_HEADER = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.FAILURE, false); @@ -58,7 +61,7 @@ public class MqttFixedHeader extends ToString { /** * 重发标志 */ - private boolean dup; + private final boolean dup; private final MqttQoS qosLevel; /** * 保留标志,是否存储消息 @@ -84,10 +87,6 @@ public class MqttFixedHeader extends ToString { return dup; } - public void setDup(boolean dup) { - this.dup = dup; - } - public MqttQoS getQosLevel() { return qosLevel; } diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttPubRelMessage.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttPubRelMessage.java index 112fa064..7983b041 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttPubRelMessage.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/message/MqttPubRelMessage.java @@ -21,7 +21,7 @@ public class MqttPubRelMessage extends MqttPubQosMessage { super(mqttFixedHeader); } - public MqttPubRelMessage(MqttPubQosVariableHeader variableHeader) { - super(MqttFixedHeader.PUB_REL_HEADER, variableHeader); + public MqttPubRelMessage(MqttFixedHeader mqttFixedHeader, MqttPubQosVariableHeader variableHeader) { + super(mqttFixedHeader, variableHeader); } } diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/util/MqttMessageBuilders.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/util/MqttMessageBuilders.java index e88fd486..34968596 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/util/MqttMessageBuilders.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/util/MqttMessageBuilders.java @@ -109,7 +109,20 @@ public final class MqttMessageBuilders { } public MqttPublishMessage build() { - MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, qos, retained); + MqttFixedHeader mqttFixedHeader; + switch (qos) { + case AT_MOST_ONCE: + mqttFixedHeader = retained ? MqttFixedHeader.PUB_RETAIN_QOS0_HEADER : MqttFixedHeader.PUB_QOS0_HEADER; + break; + case AT_LEAST_ONCE: + mqttFixedHeader = retained ? MqttFixedHeader.PUB_RETAIN_QOS1_HEADER : MqttFixedHeader.PUB_QOS1_HEADER; + break; + case EXACTLY_ONCE: + mqttFixedHeader = retained ? MqttFixedHeader.PUB_RETAIN_QOS2_HEADER : MqttFixedHeader.PUB_QOS2_HEADER; + break; + default: + throw new IllegalStateException("qos value not supported"); + } MqttPublishVariableHeader mqttVariableHeader = new MqttPublishVariableHeader(packetId, topic, publishProperties); return new MqttPublishMessage(mqttFixedHeader, mqttVariableHeader, payload); } -- Gitee From 0e2ce63c6eeacc9da4e6b04e52c923f70b4e5431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Sat, 29 Apr 2023 19:00:20 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E5=8D=87=E7=BA=A7smart-socket=E8=87=B31.?= =?UTF-8?q?5.27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e5c86a0..1896438b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 0.19 - 1.5.26 + 1.5.27 1.1.22 2.6 4.3 -- Gitee From 926de72ffc373c278c48a4981bc44bc53da59904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Sat, 29 Apr 2023 20:20:48 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/smartboot/mqtt/common/DefaultMqttWriter.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/DefaultMqttWriter.java b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/DefaultMqttWriter.java index cfe79630..f6a2aa1a 100644 --- a/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/DefaultMqttWriter.java +++ b/smart-mqtt-common/src/main/java/org/smartboot/mqtt/common/DefaultMqttWriter.java @@ -57,9 +57,6 @@ public class DefaultMqttWriter implements MqttWriter { ValidateUtils.isTrue(size != 0, "erro: writeShort can't write data, because writer is empty"); size += data.length; writeBuffer.write(data); - if (data.length > 1024) { - System.out.println("aaaaaaa"); - } } @Override -- Gitee From f832fefe3657d468c7b95c2dc103dfe3a3618b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Sun, 30 Apr 2023 10:24:34 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E5=BC=80=E5=8F=91=200.20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- smart-mqtt-broker/pom.xml | 2 +- .../main/java/org/smartboot/mqtt/broker/BrokerConfigure.java | 2 +- smart-mqtt-client/pom.xml | 2 +- smart-mqtt-common/pom.xml | 2 +- smart-mqtt-data-persistence/pom.xml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 1896438b..55958d95 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,12 @@ org.smartboot.mqtt smart-mqtt smart-mqtt - 0.19 + 0.20 4.0.0 mqtt broker - 0.19 + 0.20 1.5.27 1.1.22 2.6 diff --git a/smart-mqtt-broker/pom.xml b/smart-mqtt-broker/pom.xml index 23847762..e50e103d 100644 --- a/smart-mqtt-broker/pom.xml +++ b/smart-mqtt-broker/pom.xml @@ -5,7 +5,7 @@ org.smartboot.mqtt smart-mqtt - 0.19 + 0.20 ../pom.xml 4.0.0 diff --git a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerConfigure.java b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerConfigure.java index f26c8480..caa7f048 100644 --- a/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerConfigure.java +++ b/smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/BrokerConfigure.java @@ -38,7 +38,7 @@ public class BrokerConfigure extends ToString { /** * 当前smart-mqtt */ - public static final String VERSION = "v0.19"; + public static final String VERSION = "v0.20"; static final Map SystemEnvironments = new HashMap<>(); diff --git a/smart-mqtt-client/pom.xml b/smart-mqtt-client/pom.xml index 1da20a7d..b93a632b 100644 --- a/smart-mqtt-client/pom.xml +++ b/smart-mqtt-client/pom.xml @@ -5,7 +5,7 @@ smart-mqtt org.smartboot.mqtt - 0.19 + 0.20 ../pom.xml 4.0.0 diff --git a/smart-mqtt-common/pom.xml b/smart-mqtt-common/pom.xml index 60c42c94..806073be 100644 --- a/smart-mqtt-common/pom.xml +++ b/smart-mqtt-common/pom.xml @@ -5,7 +5,7 @@ smart-mqtt org.smartboot.mqtt - 0.19 + 0.20 ../pom.xml 4.0.0 diff --git a/smart-mqtt-data-persistence/pom.xml b/smart-mqtt-data-persistence/pom.xml index 1e7bd7ba..b62c8faf 100644 --- a/smart-mqtt-data-persistence/pom.xml +++ b/smart-mqtt-data-persistence/pom.xml @@ -3,7 +3,7 @@ smart-mqtt org.smartboot.mqtt - 0.19 + 0.20 ../pom.xml 4.0.0 -- Gitee From 1f8b35bdac89085391969e9b5e48ba74b8d0c449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 2 May 2023 20:27:01 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dashboard/components.d.ts | 2 + dashboard/package.json | 2 +- dashboard/src/api/module/api.ts | 5 + dashboard/src/layouts/BaseLayout.vue | 522 +++++++++--------- dashboard/src/mockjs/user.ts | 17 + dashboard/src/router/module/base-routes.ts | 18 + dashboard/src/views/Dashboard/overview.vue | 15 +- dashboard/src/views/System/setting.vue | 69 +++ dashboard/src/views/System/user.vue | 120 ++++ dashboard/vite.config.ts | 4 +- docker-compose.yml | 6 +- .../mqtt/broker/BrokerContextImpl.java | 8 +- .../mqtt/broker/openapi/OpenApi.java | 10 + .../mqtt/broker/openapi/OpenApiPlugin.java | 2 + .../openapi/controller/SystemController.java | 35 ++ 15 files changed, 571 insertions(+), 264 deletions(-) create mode 100644 dashboard/src/views/System/setting.vue create mode 100644 dashboard/src/views/System/user.vue create mode 100644 smart-mqtt-broker/src/main/java/org/smartboot/mqtt/broker/openapi/controller/SystemController.java diff --git a/dashboard/components.d.ts b/dashboard/components.d.ts index 990f1edb..206cc70a 100644 --- a/dashboard/components.d.ts +++ b/dashboard/components.d.ts @@ -21,6 +21,7 @@ declare module '@vue/runtime-core' { LayConfigProvider: typeof import('@layui/layui-vue')['LayConfigProvider'] LayContainer: typeof import('@layui/layui-vue')['LayContainer'] LayCountUp: typeof import('@layui/layui-vue')['LayCountUp'] + LayDatePicker: typeof import('@layui/layui-vue')['LayDatePicker'] LayDropdown: typeof import('@layui/layui-vue')['LayDropdown'] LayDropdownMenu: typeof import('@layui/layui-vue')['LayDropdownMenu'] LayDropdownMenuItem: typeof import('@layui/layui-vue')['LayDropdownMenuItem'] @@ -42,6 +43,7 @@ declare module '@vue/runtime-core' { LayProgress: typeof import('@layui/layui-vue')['LayProgress'] LayQrcode: typeof import('@layui/layui-vue')['LayQrcode'] LayResult: typeof import('@layui/layui-vue')['LayResult'] + LayRipple: typeof import('@layui/layui-vue')['LayRipple'] LayRow: typeof import('@layui/layui-vue')['LayRow'] LayScroll: typeof import('@layui/layui-vue')['LayScroll'] LaySelect: typeof import('@layui/layui-vue')['LaySelect'] diff --git a/dashboard/package.json b/dashboard/package.json index 9e8dc7bf..89589702 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -8,7 +8,7 @@ "serve": "vite preview" }, "dependencies": { - "@layui/layui-vue": "1.10.0", + "@layui/layui-vue": "1.11.4", "axios": "^1.2.1", "chart.js": "^4.2.1", "echarts": "^5.4.1", diff --git a/dashboard/src/api/module/api.ts b/dashboard/src/api/module/api.ts index 1762052d..e9a258ee 100644 --- a/dashboard/src/api/module/api.ts +++ b/dashboard/src/api/module/api.ts @@ -30,3 +30,8 @@ export const subscriptions_subscription = function (query: {}) { export const subscriptions_topics = function (query: {}) { return Http.post('/subscriptions/topics', query) } + +export const system_user_list = function (query: {}) { + return Http.post('/system/user/list', query) +} + diff --git a/dashboard/src/layouts/BaseLayout.vue b/dashboard/src/layouts/BaseLayout.vue index ff1be79b..5932778c 100644 --- a/dashboard/src/layouts/BaseLayout.vue +++ b/dashboard/src/layouts/BaseLayout.vue @@ -1,168 +1,179 @@ diff --git a/dashboard/src/mockjs/user.ts b/dashboard/src/mockjs/user.ts index 26d88059..6969196f 100644 --- a/dashboard/src/mockjs/user.ts +++ b/dashboard/src/mockjs/user.ts @@ -52,6 +52,23 @@ const menus = [ icon: "layui-icon-senior", title: "ChatMQTT" }, + { + id: "/system", + icon: "layui-icon-set", + title: "系统设置", + children:[ + { + id: "/system/user", + title: "用户", + icon:"layui-icon-group" + }, + { + id: "/system/setting", + title: "设置", + icon: "layui-icon-set-sm" + } + ] + }, // { // // id: "/chatGPT", diff --git a/dashboard/src/router/module/base-routes.ts b/dashboard/src/router/module/base-routes.ts index ee358685..4047a9df 100644 --- a/dashboard/src/router/module/base-routes.ts +++ b/dashboard/src/router/module/base-routes.ts @@ -74,6 +74,24 @@ export default [ }, ] }, + { + path: '/system', + // redirect: "/dashboard/overview", + component: BaseLayout, + children: [ + { + path: '/system/user', + component: () => import('../../views/System/user.vue'), + meta: {title: '用户', requireAuth: true}, + }, + { + path: '/system/setting', + component: () => import('../../views/System/setting.vue'), + meta: {title: '设置', requireAuth: true}, + }, + ] + + }, // { // path: '/chatGPT', // component: BaseLayout, diff --git a/dashboard/src/views/Dashboard/overview.vue b/dashboard/src/views/Dashboard/overview.vue index 58b94953..a5eddb9e 100644 --- a/dashboard/src/views/Dashboard/overview.vue +++ b/dashboard/src/views/Dashboard/overview.vue @@ -1,9 +1,4 @@