From 0ec6fbd34ca4633a415e17ee50450f12e815a4aa Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 13 三月 2023 23:29:05 +0800 Subject: [PATCH] fix 修复 管理租户被修改导致无法登录超管账号问题 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 41 insertions(+), 17 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index d34ef32..8ac63f8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -1,14 +1,14 @@ package com.ruoyi.system.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.constant.UserConstants; -import com.ruoyi.common.core.utils.BeanCopyUtils; +import com.ruoyi.common.core.utils.MapstructUtils; import com.ruoyi.common.core.utils.StreamUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.TreeBuildUtils; @@ -16,6 +16,7 @@ import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRoleMenu; +import com.ruoyi.system.domain.SysTenantPackage; import com.ruoyi.system.domain.bo.SysMenuBo; import com.ruoyi.system.domain.vo.MetaVo; import com.ruoyi.system.domain.vo.RouterVo; @@ -23,6 +24,7 @@ import com.ruoyi.system.mapper.SysMenuMapper; import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMenuMapper; +import com.ruoyi.system.mapper.SysTenantPackageMapper; import com.ruoyi.system.service.ISysMenuService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,6 +43,7 @@ private final SysMenuMapper baseMapper; private final SysRoleMapper roleMapper; private final SysRoleMenuMapper roleMenuMapper; + private final SysTenantPackageMapper sysTenantPackageMapper; /** * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃 @@ -63,7 +66,7 @@ public List<SysMenuVo> selectMenuList(SysMenuBo menu, Long userId) { List<SysMenuVo> menuList; // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭� - if (LoginHelper.isAdmin(userId)) { + if (LoginHelper.isSuperAdmin(userId)) { menuList = baseMapper.selectVoList(new LambdaQueryWrapper<SysMenu>() .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()) @@ -79,7 +82,7 @@ .orderByAsc("m.parent_id") .orderByAsc("m.order_num"); List<SysMenu> list = baseMapper.selectMenuListByUserId(wrapper); - menuList = BeanCopyUtils.copyList(list, SysMenuVo.class); + menuList = MapstructUtils.convert(list, SysMenuVo.class); } return menuList; } @@ -96,7 +99,7 @@ Set<String> permsSet = new HashSet<>(); for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { - permsSet.addAll(Arrays.asList(perm.trim().split(","))); + permsSet.addAll(StringUtils.splitList(perm.trim())); } } return permsSet; @@ -114,7 +117,7 @@ Set<String> permsSet = new HashSet<>(); for (String perm : perms) { if (StringUtils.isNotEmpty(perm)) { - permsSet.addAll(Arrays.asList(perm.trim().split(","))); + permsSet.addAll(StringUtils.splitList(perm.trim())); } } return permsSet; @@ -129,7 +132,7 @@ @Override public List<SysMenu> selectMenuTreeByUserId(Long userId) { List<SysMenu> menus; - if (LoginHelper.isAdmin(userId)) { + if (LoginHelper.isSuperAdmin(userId)) { menus = baseMapper.selectMenuTreeAll(); } else { menus = baseMapper.selectMenuTreeByUserId(userId); @@ -150,6 +153,30 @@ } /** + * 鏍规嵁绉熸埛濂楅ID鏌ヨ鑿滃崟鏍戜俊鎭� + * + * @param packageId 绉熸埛濂楅ID + * @return 閫変腑鑿滃崟鍒楄〃 + */ + @Override + public List<Long> selectMenuListByPackageId(Long packageId) { + SysTenantPackage tenantPackage = sysTenantPackageMapper.selectById(packageId); + List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); + if (CollUtil.isEmpty(menuIds)) { + return List.of(); + } + List<Long> parentIds = null; + if (tenantPackage.getMenuCheckStrictly()) { + parentIds = baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>() + .select(SysMenu::getParentId) + .in(SysMenu::getMenuId, menuIds), Convert::toLong); + } + return baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>() + .in(SysMenu::getMenuId, menuIds) + .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), Convert::toLong); + } + + /** * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟 * * @param menus 鑿滃崟鍒楄〃 @@ -163,11 +190,11 @@ router.setHidden("1".equals(menu.getVisible())); router.setName(menu.getRouteName()); router.setPath(menu.getRouterPath()); - router.setComponent(menu.getComponent()); + router.setComponent(menu.getComponentInfo()); router.setQuery(menu.getQueryParam()); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); List<SysMenu> cMenus = menu.getChildren(); - if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { + if (CollUtil.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); router.setRedirect("noRedirect"); router.setChildren(buildMenus(cMenus)); @@ -176,7 +203,7 @@ List<RouterVo> childrenList = new ArrayList<>(); RouterVo children = new RouterVo(); children.setPath(menu.getPath()); - children.setComponent(menu.getComponent()); + children.setComponent(menu.getComponentInfo()); children.setName(StringUtils.capitalize(menu.getPath())); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); children.setQuery(menu.getQueryParam()); @@ -259,7 +286,7 @@ */ @Override public int insertMenu(SysMenuBo bo) { - SysMenu menu = BeanUtil.toBean(bo, SysMenu.class); + SysMenu menu = MapstructUtils.convert(bo, SysMenu.class); return baseMapper.insert(menu); } @@ -271,7 +298,7 @@ */ @Override public int updateMenu(SysMenuBo bo) { - SysMenu menu = BeanUtil.toBean(bo, SysMenu.class); + SysMenu menu = MapstructUtils.convert(bo, SysMenu.class); return baseMapper.updateById(menu); } @@ -293,15 +320,12 @@ * @return 缁撴灉 */ @Override - public String checkMenuNameUnique(SysMenuBo menu) { + public boolean checkMenuNameUnique(SysMenuBo menu) { boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysMenu>() .eq(SysMenu::getMenuName, menu.getMenuName()) .eq(SysMenu::getParentId, menu.getParentId()) .ne(ObjectUtil.isNotNull(menu.getMenuId()), SysMenu::getMenuId, menu.getMenuId())); - if (exist) { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; + return !exist; } /** -- Gitblit v1.9.3