From 8687add275798f446d6b69beeddb0f082f212862 Mon Sep 17 00:00:00 2001 From: hongchao <3228015117@qq.com> Date: Mon, 23 Jun 2025 15:19:04 +0800 Subject: [PATCH] =?UTF-8?q?app=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 2 + .../bonus/system/mapper/SysMenuMapper.java | 18 +++++++++ .../bonus/system/service/ISysMenuService.java | 18 +++++++++ .../system/service/ISysPermissionService.java | 9 +++++ .../service/impl/SysMenuServiceImpl.java | 38 +++++++++++++++++++ .../impl/SysPermissionServiceImpl.java | 37 ++++++++++++++++++ .../resources/mapper/system/SysMenuMapper.xml | 17 +++++++++ 7 files changed, 139 insertions(+) diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java index 637dd6a..abc5c7c 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java @@ -269,10 +269,12 @@ public class SysUserController extends BaseController { Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + Set urlPermissions = permissionService.getUrlPermissions(user); AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); + ajax.put("urlPermissions", urlPermissions); return ajax; } catch (Exception e) { logger.error(e.toString(), e); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysMenuMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysMenuMapper.java index 8d3972e..e2390cc 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysMenuMapper.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysMenuMapper.java @@ -44,6 +44,24 @@ public interface SysMenuMapper */ public List selectMenuPermsByRoleId(Long roleId); + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + public List selectMenuUrlPermsByRoleId(Long roleId); + + + /** + * 根据用户ID查询路由地址权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + public List selectMenuUrlPermsByUserId(Long userId); + + /** * 根据用户ID查询权限 * diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysMenuService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysMenuService.java index 3f266fc..b695640 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysMenuService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysMenuService.java @@ -40,6 +40,24 @@ public interface ISysMenuService */ public Set selectMenuPermsByUserId(Long userId); + /** + * 根据用户ID查询路由权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + public Set selectMenuUrlPermsByUserId(Long userId); + + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + public Set selectMenuUrlPermsByRoleId(Long roleId); + + /** * 根据角色ID查询权限 * diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysPermissionService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysPermissionService.java index 3384b04..e14586e 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysPermissionService.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/ISysPermissionService.java @@ -26,4 +26,13 @@ public interface ISysPermissionService * @return 菜单权限信息 */ public Set getMenuPermission(SysUser user); + + + /** + * 获取菜单路由地址数据权限 + * + * @param user 用户Id + * @return 菜单权限信息 + */ + public Set getUrlPermissions(SysUser user); } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysMenuServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysMenuServiceImpl.java index 234786a..74ff7a0 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysMenuServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysMenuServiceImpl.java @@ -102,6 +102,44 @@ public class SysMenuServiceImpl implements ISysMenuService return permsSet; } + /** + * 根据用户ID查询路由地址权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set selectMenuUrlPermsByUserId(Long userId) + { + List perms = menuMapper.selectMenuUrlPermsByUserId(userId); + Set permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + + @Override + public Set selectMenuUrlPermsByRoleId(Long roleId) + { + List perms = menuMapper.selectMenuUrlPermsByRoleId(roleId); + Set permsSet = new HashSet<>(); + for (String perm : perms) + { + if (StringUtils.isNotEmpty(perm)) + { + permsSet.addAll(Arrays.asList(perm.trim().split(","))); + } + } + return permsSet; + } + + /** * 根据角色ID查询权限 * diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysPermissionServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysPermissionServiceImpl.java index 8b41894..d270b5d 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysPermissionServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysPermissionServiceImpl.java @@ -83,4 +83,41 @@ public class SysPermissionServiceImpl implements ISysPermissionService } return perms; } + + + /** + * 获取菜单路由地址数据权限 + * + * @param user 用户Id + * @return 菜单权限信息 + */ + @Override + public Set getUrlPermissions(SysUser user) + { + Set perms = new HashSet(); + // 管理员拥有所有权限 + if (user.isAdmin()) + { + perms.add("*:*:*"); + } + else + { + List roles = user.getRoles(); + if (!CollectionUtils.isEmpty(roles)) + { + // 多角色设置permissions属性,以便数据权限匹配权限 + for (SysRole role : roles) + { + Set rolePerms = menuService.selectMenuUrlPermsByRoleId(role.getRoleId()); + role.setPermissions(rolePerms); + perms.addAll(rolePerms); + } + } + else + { + perms.addAll(menuService.selectMenuUrlPermsByUserId(user.getUserId())); + } + } + return perms; + } } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysMenuMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysMenuMapper.xml index 6736ebf..d7be404 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -143,6 +143,23 @@ left join sys_role r on r.role_id = ur.role_id where m.status = '0' and r.status = '0' and ur.user_id = #{userId} + + + + +