From f03c00b2c17835949cbb67adfd79c90d988d9117 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Wed, 7 Aug 2024 22:27:05 +0800
Subject: [PATCH 1/5] =?UTF-8?q?reset=20=E5=9B=9E=E6=BB=9A=20sms4j=20?=
=?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7(=E6=9C=89=E9=97=AE?=
=?UTF-8?q?=E9=A2=98)?=
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 a5d1fc410..d96f19d0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
2.25.15
0.29.13
- 3.3.1
+ 3.2.1
1.2.83
From 44d776a76fa31e95303d1c823803c5c07933dff1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Fri, 9 Aug 2024 10:38:43 +0800
Subject: [PATCH 2/5] update sms4j 3.2.1 => 3.3.2
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index d96f19d0c..6708cc8b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
2.25.15
0.29.13
- 3.2.1
+ 3.3.2
1.2.83
From 23b70ca0becb37471ead0928727f10a5d0d00740 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Fri, 9 Aug 2024 11:54:47 +0800
Subject: [PATCH 3/5] update anyline 8.7.2-20240808
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6708cc8b1..bbb394ea7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
1.2.83
- 8.7.2-20240728
+ 8.7.2-20240808
7.0.1
From bc2b4876b61decd2f912977d073e24b195a07881 Mon Sep 17 00:00:00 2001
From: AprilWind <2100166581@qq.com>
Date: Fri, 9 Aug 2024 14:08:19 +0800
Subject: [PATCH 4/5] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E7=94=9F=E6=88=90=E9=9B=86=E5=90=88=E7=B1=BB=E5=9E=8B=E5=B7=A5?=
=?UTF-8?q?=E5=85=B7=E5=88=A4=E6=96=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../org/dromara/generator/service/GenTableServiceImpl.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
index e1e340ff1..99935f7fa 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
@@ -3,7 +3,6 @@ package org.dromara.generator.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.Dict;
-import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
@@ -196,7 +195,7 @@ public class GenTableServiceImpl implements IGenTableService {
.filter(x -> !StringUtils.containsAnyIgnoreCase(x.getName(), TABLE_IGNORE))
.filter(x -> tableNameSet.contains(x.getName())).toList();
- if (ArrayUtil.isEmpty(tableList)) {
+ if (CollUtil.isEmpty(tableList)) {
return new ArrayList<>();
}
return tableList.stream().map(x -> {
From b8d9af65e2e60fcfb448d277b0ed3daef9688b2d Mon Sep 17 00:00:00 2001
From: AprilWind <2100166581@qq.com>
Date: Fri, 9 Aug 2024 17:24:44 +0800
Subject: [PATCH 5/5] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0sse=E6=B3=A8?=
=?UTF-8?q?=E9=87=8A=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../common/sse/controller/SseController.java | 25 ++++++++++++++++++
.../common/sse/core/SseEmitterManager.java | 26 +++++++++++++++++++
.../common/sse/utils/SseMessageUtils.java | 2 +-
3 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java
index 91413f191..e5331e419 100644
--- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java
+++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/controller/SseController.java
@@ -16,6 +16,11 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.List;
+/**
+ * SSE 控制器
+ *
+ * @author Lion Li
+ */
@RestController
@ConditionalOnProperty(value = "sse.enabled", havingValue = "true")
@RequiredArgsConstructor
@@ -23,6 +28,9 @@ public class SseController implements DisposableBean {
private final SseEmitterManager sseEmitterManager;
+ /**
+ * 建立 SSE 连接
+ */
@GetMapping(value = "${sse.path}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter connect() {
String tokenValue = StpUtil.getTokenValue();
@@ -30,6 +38,9 @@ public class SseController implements DisposableBean {
return sseEmitterManager.connect(userId, tokenValue);
}
+ /**
+ * 关闭 SSE 连接
+ */
@SaIgnore
@GetMapping(value = "${sse.path}/close")
public R close() {
@@ -39,6 +50,12 @@ public class SseController implements DisposableBean {
return R.ok();
}
+ /**
+ * 向特定用户发送消息
+ *
+ * @param userId 目标用户的 ID
+ * @param msg 要发送的消息内容
+ */
@GetMapping(value = "${sse.path}/send")
public R send(Long userId, String msg) {
SseMessageDto dto = new SseMessageDto();
@@ -48,12 +65,20 @@ public class SseController implements DisposableBean {
return R.ok();
}
+ /**
+ * 向所有用户发送消息
+ *
+ * @param msg 要发送的消息内容
+ */
@GetMapping(value = "${sse.path}/sendAll")
public R send(String msg) {
sseEmitterManager.publishAll(msg);
return R.ok();
}
+ /**
+ * 清理资源。此方法目前不执行任何操作,但避免因未实现而导致错误
+ */
@Override
public void destroy() throws Exception {
// 销毁时不需要做什么 此方法避免无用操作报错
diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java
index 039e17f4e..1d37a27de 100644
--- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java
+++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java
@@ -13,8 +13,14 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
+/**
+ * 管理 Server-Sent Events (SSE) 连接
+ *
+ * @author Lion Li
+ */
@Slf4j
public class SseEmitterManager {
+
/**
* 订阅的频道
*/
@@ -22,24 +28,44 @@ public class SseEmitterManager {
private final static Map> USER_TOKEN_EMITTERS = new ConcurrentHashMap<>();
+ /**
+ * 建立与指定用户的 SSE 连接
+ *
+ * @param userId 用户的唯一标识符,用于区分不同用户的连接
+ * @param token 用户的唯一令牌,用于识别具体的连接
+ * @return 返回一个 SseEmitter 实例,客户端可以通过该实例接收 SSE 事件
+ */
public SseEmitter connect(Long userId, String token) {
+ // 从 USER_TOKEN_EMITTERS 中获取或创建当前用户的 SseEmitter 映射表(ConcurrentHashMap)
+ // 每个用户可以有多个 SSE 连接,通过 token 进行区分
Map emitters = USER_TOKEN_EMITTERS.computeIfAbsent(userId, k -> new ConcurrentHashMap<>());
+
+ // 创建一个新的 SseEmitter 实例,超时时间设置为 0 表示无限制
SseEmitter emitter = new SseEmitter(0L);
emitters.put(token, emitter);
+ // 当 emitter 完成、超时或发生错误时,从映射表中移除对应的 token
emitter.onCompletion(() -> emitters.remove(token));
emitter.onTimeout(() -> emitters.remove(token));
emitter.onError((e) -> emitters.remove(token));
try {
+ // 向客户端发送一条连接成功的事件
emitter.send(SseEmitter.event().comment("connected"));
} catch (IOException e) {
+ // 如果发送消息失败,则从映射表中移除 emitter
emitters.remove(token);
}
return emitter;
}
+ /**
+ * 断开指定用户的 SSE 连接
+ *
+ * @param userId 用户的唯一标识符,用于区分不同用户的连接
+ * @param token 用户的唯一令牌,用于识别具体的连接
+ */
public void disconnect(Long userId, String token) {
Map emitters = USER_TOKEN_EMITTERS.get(userId);
if (emitters != null) {
diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java
index 4334e98bc..c6abdc8fd 100644
--- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java
+++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java
@@ -8,7 +8,7 @@ import org.dromara.common.sse.core.SseEmitterManager;
import org.dromara.common.sse.dto.SseMessageDto;
/**
- * 工具类
+ * SSE工具类
*
* @author Lion Li
*/