|
@@ -22,14 +22,17 @@ import org.dromara.system.domain.bo.SysMenuBo;
|
|
|
import org.dromara.system.domain.vo.MetaVo;
|
|
import org.dromara.system.domain.vo.MetaVo;
|
|
|
import org.dromara.system.domain.vo.RouterVo;
|
|
import org.dromara.system.domain.vo.RouterVo;
|
|
|
import org.dromara.system.domain.vo.SysMenuVo;
|
|
import org.dromara.system.domain.vo.SysMenuVo;
|
|
|
|
|
+import org.dromara.system.domain.vo.UserCommonUseMenuVo;
|
|
|
import org.dromara.system.mapper.SysMenuMapper;
|
|
import org.dromara.system.mapper.SysMenuMapper;
|
|
|
import org.dromara.system.mapper.SysRoleMapper;
|
|
import org.dromara.system.mapper.SysRoleMapper;
|
|
|
import org.dromara.system.mapper.SysRoleMenuMapper;
|
|
import org.dromara.system.mapper.SysRoleMenuMapper;
|
|
|
import org.dromara.system.mapper.SysTenantPackageMapper;
|
|
import org.dromara.system.mapper.SysTenantPackageMapper;
|
|
|
import org.dromara.system.service.ISysMenuService;
|
|
import org.dromara.system.service.ISysMenuService;
|
|
|
|
|
+import org.dromara.system.service.IUserCommonUseMenuService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 菜单 业务层处理
|
|
* 菜单 业务层处理
|
|
@@ -45,6 +48,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
private final SysRoleMenuMapper roleMenuMapper;
|
|
private final SysRoleMenuMapper roleMenuMapper;
|
|
|
private final SysTenantPackageMapper tenantPackageMapper;
|
|
private final SysTenantPackageMapper tenantPackageMapper;
|
|
|
|
|
|
|
|
|
|
+ private final IUserCommonUseMenuService userCommonUseMenuService;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 根据用户查询系统菜单列表
|
|
* 根据用户查询系统菜单列表
|
|
|
*
|
|
*
|
|
@@ -92,6 +97,53 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
|
|
return menuList;
|
|
return menuList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询所有已选择了的菜单已经路由path
|
|
|
|
|
+ * @param userId 用户id
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<SysMenuVo> selectMenuSelectedByUserId(Long userId) {
|
|
|
|
|
+
|
|
|
|
|
+ // 查询已选择的菜单
|
|
|
|
|
+ List<UserCommonUseMenuVo> selected = userCommonUseMenuService.queryListByUserId(userId);
|
|
|
|
|
+ if(CollUtil.isEmpty(selected)){
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+ List<Long> selectedMenuIds = selected.stream().map(UserCommonUseMenuVo::getMenuId).toList();
|
|
|
|
|
+ // 查询所有菜单
|
|
|
|
|
+ SysMenuBo menu = new SysMenuBo();
|
|
|
|
|
+ menu.setVisible(UserConstants.NORMAL);
|
|
|
|
|
+ menu.setStatus(UserConstants.MENU_NORMAL);
|
|
|
|
|
+ List<SysMenuVo> allMenus = selectMenuList(menu, userId);
|
|
|
|
|
+ List<SysMenuVo> selectedMenus = allMenus.stream().filter(e -> selectedMenuIds.contains(e.getMenuId())).toList();
|
|
|
|
|
+ for (SysMenuVo selectedMenu : selectedMenus) {
|
|
|
|
|
+ // 查找路由 通过 递归方式
|
|
|
|
|
+ selectedMenu.setRoutePath(selectedMenu.getPath());
|
|
|
|
|
+ String routerPath = getRouterPath(selectedMenu, allMenus);
|
|
|
|
|
+ selectedMenu.setRoutePath(routerPath);
|
|
|
|
|
+ }
|
|
|
|
|
+ return selectedMenus;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private String getRouterPath(SysMenuVo menu, List<SysMenuVo> menus) {
|
|
|
|
|
+ // 查找路由 通过 递归方式
|
|
|
|
|
+ // 找出菜单的routepath,拼接所有父级菜单的path
|
|
|
|
|
+ String rs = menu.getRoutePath();
|
|
|
|
|
+ Long parentId = menu.getParentId();
|
|
|
|
|
+ if(parentId !=null ){
|
|
|
|
|
+ Optional<SysMenuVo> first = menus.stream().filter(e -> e.getMenuId().equals(parentId)).findFirst();
|
|
|
|
|
+ if(first.isPresent()){
|
|
|
|
|
+ SysMenuVo s = first.get();
|
|
|
|
|
+ s.setRoutePath(s.getPath()+"/"+menu.getRoutePath());
|
|
|
|
|
+ return getRouterPath(s, menus);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ System.err.println(rs);
|
|
|
|
|
+ return rs;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return rs;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 根据用户ID查询权限
|
|
* 根据用户ID查询权限
|
|
|
*
|
|
*
|