| | |
| | | package cn.gistack.system.service.impl; |
| | | |
| | | import cn.gistack.system.entity.*; |
| | | import cn.gistack.system.vo.Meta; |
| | | import cn.gistack.system.vo.WebMenuVO; |
| | | import cn.gistack.system.wrapper.MenuWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | |
| | | public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) { |
| | | if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) { |
| | | parentId = null; |
| | | } |
| | | // 如果不是超级管理员 |
| | | if (!AuthUtil.isAdministrator()){ |
| | | param.put("super",1); |
| | | } |
| | | return baseMapper.lazyList(parentId, param); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public List<TreeNode> grantTree(BladeUser user) { |
| | | List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())); |
| | | Map<String, Object> param = new HashMap<>(1); |
| | | // 如果不是超级管理员 |
| | | if(!AuthUtil.isAdministrator()){ |
| | | return ForestNodeMerger.merge(tenantPackageTree(baseMapper.grantTreeNew(), user.getTenantId())); |
| | | } |
| | | List<TreeNode> menuTree = user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree(param) : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())); |
| | | return ForestNodeMerger.merge(tenantPackageTree(menuTree, user.getTenantId())); |
| | | } |
| | | |
| | |
| | | ); |
| | | } |
| | | Long cnt = baseMapper.selectCount(menuQueryWrapper); |
| | | if (cnt > 0L) { |
| | | throw new ServiceException("菜单名或编号已存在!"); |
| | | } |
| | | //控制不允许重复菜单名 |
| | | // if (cnt > 0L) { |
| | | // throw new ServiceException("菜单名或编号已存在!"); |
| | | // } |
| | | if (menu.getParentId() == null && menu.getId() == null) { |
| | | menu.setParentId(BladeConstant.TOP_PARENT_ID); |
| | | } |
| | |
| | | return saveOrUpdate(menu); |
| | | } |
| | | |
| | | @Override |
| | | public List<MenuVO> getAppMenu(String roleId) { |
| | | String[] ids = roleId.split(","); |
| | | return baseMapper.selectAppMenu(ids); |
| | | } |
| | | |
| | | @Override |
| | | public List<WebMenuVO> getWebMenu(String roleId) { |
| | | |
| | | List<MenuVO> routes = routes(roleId, null); |
| | | |
| | | List<MenuVO> list = routes.stream().filter(r -> Func.equals(r.getAlias(), "web")).collect(Collectors.toList()); |
| | | list.addAll(routes.stream().filter(r -> Func.equals(r.getAlias(), "newWeb")).collect(Collectors.toList())); |
| | | list.addAll(routes.stream().filter(r -> Func.equals(r.getAlias(), "superWeb")).collect(Collectors.toList())); |
| | | if (list.size()>0){ |
| | | MenuVO menuVO = list.get(0); |
| | | // int level = 0; |
| | | WebMenuVO webMenuVO = buildWebMenuVO(menuVO); |
| | | return webMenuVO.getChildren(); |
| | | }else { |
| | | return null; |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public List<MenuVO> getButtonList(String roleId) { |
| | | return baseMapper.getButtonList(Func.toLongList(roleId)); |
| | | } |
| | | |
| | | |
| | | public WebMenuVO buildWebMenuVO(MenuVO menuVO){ |
| | | WebMenuVO webMenuVO = new WebMenuVO(); |
| | | Meta meta = new Meta(); |
| | | webMenuVO.setMeta(meta); |
| | | webMenuVO.getMeta().setLevel(menuVO.getLevel()); |
| | | // level++; |
| | | // final int levelTemp = level; |
| | | //设置基础信息 |
| | | webMenuVO.setPath(menuVO.getPath()); |
| | | webMenuVO.setComponent(menuVO.getComponents()); |
| | | webMenuVO.getMeta().setIcon(menuVO.getIconPath()); |
| | | webMenuVO.getMeta().setTitle(menuVO.getName()); |
| | | webMenuVO.setComponentPath(menuVO.getComponentPath()); |
| | | |
| | | if (Func.equals(menuVO.getHasSubMenu(),"1")){ |
| | | webMenuVO.getMeta().setHasSubMenu(true); |
| | | }else { |
| | | webMenuVO.getMeta().setHasSubMenu(false); |
| | | } |
| | | if (menuVO.getChildren().size()>0){ |
| | | //有子菜单 |
| | | List<WebMenuVO> list = new ArrayList<>(); |
| | | menuVO.getChildren().forEach(menu->{ |
| | | WebMenuVO webMenuVO1 = buildWebMenuVO(menu); |
| | | list.add(webMenuVO1); |
| | | }); |
| | | webMenuVO.setChildren(list); |
| | | } |
| | | |
| | | return webMenuVO; |
| | | |
| | | } |
| | | |
| | | } |