diff --git a/pom.xml b/pom.xml index 337c6f9a5..b2794b1c0 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 4.0.1 UTF-8 UTF-8 - 17 + 21 3.5.16 3.0.1 0.15.0 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index 9a87b99a6..1c7cb3438 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -33,6 +33,8 @@ import org.springframework.stereotype.Service; import java.time.Duration; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.function.Supplier; /** @@ -144,17 +146,27 @@ public class SysLoginService { loginUser.setUsername(user.getUserName()); loginUser.setNickname(user.getNickName()); loginUser.setUserType(user.getUserType()); - loginUser.setMenuPermission(permissionService.getMenuPermission(userId)); - loginUser.setRolePermission(permissionService.getRolePermission(userId)); if (ObjectUtil.isNotNull(user.getDeptId())) { Opt deptOpt = Opt.of(user.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)); + try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) { + executor.execute(() -> { + loginUser.setMenuPermission(permissionService.getMenuPermission(userId)); + }); + executor.execute(() -> { + loginUser.setRolePermission(permissionService.getRolePermission(userId)); + }); + executor.execute(() -> { + List roles = roleService.selectRolesByUserId(userId); + loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class)); + }); + executor.execute(() -> { + List posts = postService.selectPostsByUserId(userId); + loginUser.setPosts(BeanUtil.copyToList(posts, PostDTO.class)); + }); + } return loginUser; }