From 3f91f1c51d238113837c228f9f4ca65493b03258 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 19 Jun 2023 13:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90permission=E3=80=91=E5=A1=AB=E5=85=85=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85=E7=9A=84=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=BC=96=E7=A0=81=E5=92=8C=E5=8A=9F=E8=83=BD=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../login/service/UserIndexInfoService.java | 70 ++++++++++++++++--- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java index db3b70c55..6fb2cfe66 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/login/service/UserIndexInfoService.java @@ -5,15 +5,21 @@ import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.sys.api.SysUserOrgServiceApi; +import cn.stylefeng.roses.kernel.sys.api.SysUserRoleServiceApi; import cn.stylefeng.roses.kernel.sys.api.SysUserServiceApi; import cn.stylefeng.roses.kernel.sys.api.pojo.user.SimpleUserDTO; import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO; import cn.stylefeng.roses.kernel.sys.modular.login.pojo.IndexUserOrgInfo; import cn.stylefeng.roses.kernel.sys.modular.login.pojo.UserIndexInfo; +import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService; +import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; +import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService; +import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; /** @@ -31,6 +37,21 @@ public class UserIndexInfoService { @Resource private SysUserOrgServiceApi sysUserOrgServiceApi; + @Resource + private SysUserRoleServiceApi sysUserRoleServiceApi; + + @Resource + private SysRoleMenuService sysRoleMenuService; + + @Resource + private SysRoleMenuOptionsService sysRoleMenuOptionsService; + + @Resource + private SysMenuService sysMenuService; + + @Resource + private SysMenuOptionsService sysMenuOptionsService; + /** * 获取用户首页信息 * @@ -52,9 +73,11 @@ public class UserIndexInfoService { this.fillUserOrgInfo(loginUser, userIndexInfo); // 3. 获取用户的权限编码集合 + this.fillUserPermissionCodeList(loginUser, userIndexInfo); // 4. 获取用户的当前登录App和菜单 + // 5. 获取菜单和路由的appId映射关系 // 6. 构建websocket url @@ -127,21 +150,13 @@ public class UserIndexInfoService { // 如果当前没激活的组织机构,则直接将主部门激活 if (currentOrgId == null) { for (IndexUserOrgInfo indexUserOrgInfo : resultUserOrg) { - if (indexUserOrgInfo.getMainFlag()) { - indexUserOrgInfo.setCurrentSelectFlag(true); - } else { - indexUserOrgInfo.setCurrentSelectFlag(false); - } + indexUserOrgInfo.setCurrentSelectFlag(indexUserOrgInfo.getMainFlag()); } } // 如果有激活的组织机构 else { for (IndexUserOrgInfo indexUserOrgInfo : resultUserOrg) { - if (indexUserOrgInfo.getOrgId().equals(currentOrgId)) { - indexUserOrgInfo.setCurrentSelectFlag(true); - } else { - indexUserOrgInfo.setCurrentSelectFlag(false); - } + indexUserOrgInfo.setCurrentSelectFlag(indexUserOrgInfo.getOrgId().equals(currentOrgId)); } } @@ -149,4 +164,39 @@ public class UserIndexInfoService { userIndexInfo.setUserOrgInfo(resultUserOrg); } + /** + * 填充用户的权限编码集合 + * + * @author fengshuonan + * @since 2023/6/19 12:38 + */ + private void fillUserPermissionCodeList(LoginUser loginUser, UserIndexInfo userIndexInfo) { + + Long userId = loginUser.getUserId(); + + // 获取用户的角色集合 + List roleIdList = sysUserRoleServiceApi.getUserRoleIdList(userId); + + if (ObjectUtil.isEmpty(roleIdList)) { + userIndexInfo.setPermissionCodeList(new HashSet<>()); + return; + } + + // 获取角色对应的菜单id和菜单功能id + List menuIdList = sysRoleMenuService.getRoleBindMenuIdList(roleIdList); + List menuOptionsIdList = sysRoleMenuOptionsService.getRoleBindMenuOptionsIdList(roleIdList); + + HashSet permissionCodeList = new HashSet<>(); + + // 获取菜单对应的菜单编码集合 + List menuCodeList = sysMenuService.getMenuCodeList(menuIdList); + permissionCodeList.addAll(menuCodeList); + + // 获取功能对应的功能编码集合 + List optionsCodeList = sysMenuOptionsService.getOptionsCodeList(menuOptionsIdList); + permissionCodeList.addAll(optionsCodeList); + + userIndexInfo.setPermissionCodeList(permissionCodeList); + } + }