From e6eeb4f8850dc547d71c381d5400ead4e1dd21b3 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: Thu, 19 Mar 2026 10:17:54 +0800
Subject: [PATCH] =?UTF-8?q?add=20=E9=BB=98=E8=AE=A4jdk=E6=8F=90=E5=8D=87?=
=?UTF-8?q?=E5=88=B021=20=E5=A2=9E=E5=8A=A0=E8=99=9A=E6=8B=9F=E7=BA=BF?=
=?UTF-8?q?=E7=A8=8B=E5=B7=A5=E5=85=B7=20=E7=AE=80=E5=8C=96=E4=B8=9A?=
=?UTF-8?q?=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../common/core/utils/ThreadUtils.java | 36 +++++++++++++++++++
.../system/dubbo/RemoteUserServiceImpl.java | 22 ++++++------
3 files changed, 49 insertions(+), 11 deletions(-)
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ThreadUtils.java
diff --git a/pom.xml b/pom.xml
index 1305a2722..831090113 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
2.5.3
UTF-8
UTF-8
- 17
+ 21
4.0.3
2025.1.1
4.0.2
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ThreadUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ThreadUtils.java
new file mode 100644
index 000000000..fd382918b
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ThreadUtils.java
@@ -0,0 +1,36 @@
+package org.dromara.common.core.utils;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.*;
+
+/**
+ * 线程工具
+ *
+ * @author Lion Li
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class ThreadUtils {
+
+ /**
+ * 批量执行任务
+ */
+ public static void virtualSubmit(Runnable ...runnableList) {
+ List> callableList = new ArrayList<>();
+ try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
+ for (Runnable runnable : runnableList) {
+ callableList.add(executor.submit(runnable));
+ }
+ for (Future> future : callableList) {
+ future.get();
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
index 5978a7b5a..a999cf343 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
@@ -11,10 +11,7 @@ import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.enums.UserStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.exception.user.UserException;
-import org.dromara.common.core.utils.DateUtils;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StreamUtils;
-import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.*;
import org.dromara.common.mybatis.helper.DataPermissionHelper;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.bo.RemoteUserBo;
@@ -252,17 +249,22 @@ public class RemoteUserServiceImpl implements RemoteUserService {
loginUser.setNickname(userVo.getNickName());
loginUser.setPassword(userVo.getPassword());
loginUser.setUserType(userVo.getUserType());
- loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
- loginUser.setRolePermission(permissionService.getRolePermission(userId));
if (ObjectUtil.isNotNull(userVo.getDeptId())) {
Opt deptOpt = Opt.of(userVo.getDeptId()).map(deptService::selectDeptById);
loginUser.setDeptName(deptOpt.map(SysDeptVo::getDeptName).orElse(StringUtils.EMPTY));
loginUser.setDeptCategory(deptOpt.map(SysDeptVo::getDeptCategory).orElse(StringUtils.EMPTY));
}
- List roles = roleService.selectRolesByUserId(userId);
- List posts = postService.selectPostsByUserId(userId);
- loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class));
- loginUser.setPosts(BeanUtil.copyToList(posts, PostDTO.class));
+ ThreadUtils.virtualSubmit(() -> {
+ loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
+ }, () -> {
+ loginUser.setRolePermission(permissionService.getRolePermission(userId));
+ }, () -> {
+ List roles = roleService.selectRolesByUserId(userId);
+ loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class));
+ }, () -> {
+ List posts = postService.selectPostsByUserId(userId);
+ loginUser.setPosts(BeanUtil.copyToList(posts, PostDTO.class));
+ });
return loginUser;
}