| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import org.dromara.common.core.constant.UserConstants; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.constant.SystemConstants; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | |
| | | import org.dromara.system.mapper.SysRoleMenuMapper; |
| | | import org.dromara.system.mapper.SysTenantPackageMapper; |
| | | import org.dromara.system.service.ISysMenuService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | |
| | | .orderByAsc(SysMenu::getOrderNum)); |
| | | } else { |
| | | QueryWrapper<SysMenu> wrapper = Wrappers.query(); |
| | | wrapper.eq("sur.user_id", userId) |
| | | wrapper.inSql("r.role_id", "select role_id from sys_user_role where user_id = " + userId) |
| | | .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName()) |
| | | .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible()) |
| | | .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus()) |
| | |
| | | if (tenantPackage.getMenuCheckStrictly()) { |
| | | parentIds = baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>() |
| | | .select(SysMenu::getParentId) |
| | | .in(SysMenu::getMenuId, menuIds), Convert::toLong); |
| | | .in(SysMenu::getMenuId, menuIds), x -> {return Convert.toLong(x);}); |
| | | } |
| | | return baseMapper.selectObjs(new LambdaQueryWrapper<SysMenu>() |
| | | .in(SysMenu::getMenuId, menuIds) |
| | | .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), Convert::toLong); |
| | | .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), x -> {return Convert.toLong(x);}); |
| | | } |
| | | |
| | | /** |
| | | * 构建前端路由所需要的菜单 |
| | | * 路由name命名规则 path首字母转大写 + id |
| | | * |
| | | * @param menus 菜单列表 |
| | | * @return 路由列表 |
| | |
| | | public List<RouterVo> buildMenus(List<SysMenu> menus) { |
| | | List<RouterVo> routers = new LinkedList<>(); |
| | | for (SysMenu menu : menus) { |
| | | String name = menu.getRouteName() + menu.getMenuId(); |
| | | RouterVo router = new RouterVo(); |
| | | router.setHidden("1".equals(menu.getVisible())); |
| | | router.setName(menu.getRouteName()); |
| | | router.setName(name); |
| | | router.setPath(menu.getRouterPath()); |
| | | 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 (CollUtil.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { |
| | | if (CollUtil.isNotEmpty(cMenus) && SystemConstants.TYPE_DIR.equals(menu.getMenuType())) { |
| | | router.setAlwaysShow(true); |
| | | router.setRedirect("noRedirect"); |
| | | router.setChildren(buildMenus(cMenus)); |
| | | } else if (menu.isMenuFrame()) { |
| | | String frameName = StringUtils.capitalize(menu.getPath()) + menu.getMenuId(); |
| | | router.setMeta(null); |
| | | List<RouterVo> childrenList = new ArrayList<>(); |
| | | RouterVo children = new RouterVo(); |
| | | children.setPath(menu.getPath()); |
| | | children.setComponent(menu.getComponentInfo()); |
| | | children.setName(StringUtils.capitalize(menu.getPath())); |
| | | children.setComponent(menu.getComponent()); |
| | | children.setName(frameName); |
| | | children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); |
| | | children.setQuery(menu.getQueryParam()); |
| | | childrenList.add(children); |
| | |
| | | List<RouterVo> childrenList = new ArrayList<>(); |
| | | RouterVo children = new RouterVo(); |
| | | String routerPath = SysMenu.innerLinkReplaceEach(menu.getPath()); |
| | | String innerLinkName = StringUtils.capitalize(routerPath) + menu.getMenuId(); |
| | | children.setPath(routerPath); |
| | | children.setComponent(UserConstants.INNER_LINK); |
| | | children.setName(StringUtils.capitalize(routerPath)); |
| | | children.setComponent(SystemConstants.INNER_LINK); |
| | | children.setName(innerLinkName); |
| | | children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); |
| | | childrenList.add(children); |
| | | router.setChildren(childrenList); |
| | |
| | | if (CollUtil.isEmpty(menus)) { |
| | | return CollUtil.newArrayList(); |
| | | } |
| | | return TreeBuildUtils.build(menus, (menu, tree) -> |
| | | tree.setId(menu.getMenuId()) |
| | | return TreeBuildUtils.build(menus, (menu, tree) -> { |
| | | Tree<Long> menuTree = tree.setId(menu.getMenuId()) |
| | | .setParentId(menu.getParentId()) |
| | | .setName(menu.getMenuName()) |
| | | .setWeight(menu.getOrderNum())); |
| | | .setWeight(menu.getOrderNum()); |
| | | menuTree.put("menuType", menu.getMenuType()); |
| | | menuTree.put("icon", menu.getIcon()); |
| | | }); |
| | | } |
| | | |
| | | /** |