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; }