From f15e8f1ffa80318348312f4703976932b2a4faf0 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: Mon, 26 May 2025 16:20:48 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E9=80=9A=E8=BF=87loginId=E6=9F=A5=E8=AF=A2=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=92=8C=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90=20=E8=80=8C?= =?UTF-8?q?=E9=9D=9E=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E6=97=B6=20?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=B7=A8=E6=9C=8D=E5=8A=A1=E6=9F=A5=E8=AF=A2=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E9=80=9A=E8=BF=87satoken=E7=9A=84api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/RemotePermissionService.java | 28 ++++++++++++++++ .../core/service/PermissionService.java | 28 ++++++++++++++++ .../core/service/SaPermissionImpl.java | 29 ++++++++++++----- .../service/impl/PermissionServiceImpl.java | 31 ++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../dubbo/RemotePermissionServiceImpl.java | 32 +++++++++++++++++++ 6 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePermissionService.java create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PermissionService.java create mode 100644 ruoyi-common/ruoyi-common-service-impl/src/main/java/org/dromara/common/core/service/impl/PermissionServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePermissionServiceImpl.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePermissionService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePermissionService.java new file mode 100644 index 000000000..2a815a2ed --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemotePermissionService.java @@ -0,0 +1,28 @@ +package org.dromara.system.api; + +import java.util.Set; + +/** + * 用户权限处理 + * + * @author Lion Li + */ +public interface RemotePermissionService { + + /** + * 获取角色数据权限 + * + * @param userId 用户id + * @return 角色权限信息 + */ + Set getRolePermission(Long userId); + + /** + * 获取菜单数据权限 + * + * @param userId 用户id + * @return 菜单权限信息 + */ + Set getMenuPermission(Long userId); + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PermissionService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PermissionService.java new file mode 100644 index 000000000..d7db79a91 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PermissionService.java @@ -0,0 +1,28 @@ +package org.dromara.common.core.service; + +import java.util.Set; + +/** + * 用户权限处理 + * + * @author Lion Li + */ +public interface PermissionService { + + /** + * 获取角色数据权限 + * + * @param userId 用户id + * @return 角色权限信息 + */ + Set getRolePermission(Long userId); + + /** + * 获取菜单数据权限 + * + * @param userId 用户id + * @return 菜单权限信息 + */ + Set getMenuPermission(Long userId); + +} diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java index 257922b08..0ff21e237 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java @@ -1,9 +1,13 @@ package org.dromara.common.satoken.core.service; import cn.dev33.satoken.stp.StpInterface; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.enums.UserType; +import org.dromara.common.core.service.PermissionService; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; import java.util.ArrayList; import java.util.List; @@ -15,19 +19,25 @@ import java.util.List; */ public class SaPermissionImpl implements StpInterface { + @Autowired + private PermissionService permissionService; + /** * 获取菜单权限列表 */ @Override public List getPermissionList(Object loginId, String loginType) { LoginUser loginUser = LoginHelper.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + List list = StringUtils.splitList(loginId.toString(), ":"); + return new ArrayList<>(permissionService.getMenuPermission(Long.parseLong(list.get(1)))); + } UserType userType = UserType.getUserType(loginUser.getUserType()); - if (userType == UserType.SYS_USER) { - return new ArrayList<>(loginUser.getMenuPermission()); - } else if (userType == UserType.APP_USER) { + if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - return new ArrayList<>(); + // SYS_USER 默认返回权限 + return new ArrayList<>(loginUser.getMenuPermission()); } /** @@ -36,12 +46,15 @@ public class SaPermissionImpl implements StpInterface { @Override public List getRoleList(Object loginId, String loginType) { LoginUser loginUser = LoginHelper.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + List list = StringUtils.splitList(loginId.toString(), ":"); + return new ArrayList<>(permissionService.getRolePermission(Long.parseLong(list.get(1)))); + } UserType userType = UserType.getUserType(loginUser.getUserType()); - if (userType == UserType.SYS_USER) { - return new ArrayList<>(loginUser.getRolePermission()); - } else if (userType == UserType.APP_USER) { + if (userType == UserType.APP_USER) { // 其他端 自行根据业务编写 } - return new ArrayList<>(); + // SYS_USER 默认返回权限 + return new ArrayList<>(loginUser.getRolePermission()); } } diff --git a/ruoyi-common/ruoyi-common-service-impl/src/main/java/org/dromara/common/core/service/impl/PermissionServiceImpl.java b/ruoyi-common/ruoyi-common-service-impl/src/main/java/org/dromara/common/core/service/impl/PermissionServiceImpl.java new file mode 100644 index 000000000..3ba632a72 --- /dev/null +++ b/ruoyi-common/ruoyi-common-service-impl/src/main/java/org/dromara/common/core/service/impl/PermissionServiceImpl.java @@ -0,0 +1,31 @@ +package org.dromara.common.core.service.impl; + +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.service.PermissionService; +import org.dromara.system.api.RemotePermissionService; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + * 权限服务 + * + * @author Lion Li + */ +@Service +public class PermissionServiceImpl implements PermissionService { + + @DubboReference + private RemotePermissionService remotePermissionService; + + @Override + public Set getRolePermission(Long userId) { + return remotePermissionService.getRolePermission(userId); + } + + @Override + public Set getMenuPermission(Long userId) { + return remotePermissionService.getMenuPermission(userId); + } + +} diff --git a/ruoyi-common/ruoyi-common-service-impl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-service-impl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0c39e3d67..8f7e6866f 100644 --- a/ruoyi-common/ruoyi-common-service-impl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-common/ruoyi-common-service-impl/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,2 @@ org.dromara.common.core.service.impl.DictServiceImpl +org.dromara.common.core.service.impl.PermissionServiceImpl diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePermissionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePermissionServiceImpl.java new file mode 100644 index 000000000..15776a12e --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemotePermissionServiceImpl.java @@ -0,0 +1,32 @@ +package org.dromara.system.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.service.PermissionService; +import org.dromara.system.service.ISysPermissionService; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + * 权限服务 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemotePermissionServiceImpl implements PermissionService { + + private final ISysPermissionService permissionService; + + @Override + public Set getRolePermission(Long userId) { + return permissionService.getRolePermission(userId); + } + + @Override + public Set getMenuPermission(Long userId) { + return permissionService.getMenuPermission(userId); + } +}