guoshilong
2023-04-14 0eb4d8d77b0bbd4b72a6bca2deafff11e08164fd
skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java
@@ -17,6 +17,8 @@
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;
@@ -278,9 +280,10 @@
         );
      }
      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);
      }
@@ -300,8 +303,47 @@
   }
   @Override
   public List<MenuVO> getWebMenu(String roleId) {
      return null;
   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());
      MenuVO menuVO = list.get(0);
      int level = 0;
      WebMenuVO webMenuVO = buildWebMenuVO(menuVO,level);
      return webMenuVO.getChildren();
   }
   public WebMenuVO buildWebMenuVO(MenuVO menuVO,int level){
      WebMenuVO webMenuVO = new WebMenuVO();
      Meta meta = new Meta();
      webMenuVO.setMeta(meta);
      webMenuVO.getMeta().setLevel(level);
      level++;
      final int levelTemp = level;
      //设置基础信息
      webMenuVO.setPath(menuVO.getPath());
      webMenuVO.setComponent(menuVO.getComponents());
      webMenuVO.getMeta().setIcon(menuVO.getIconPath());
      webMenuVO.getMeta().setTitle(menuVO.getName());
      if (menuVO.getChildren().size()>0){
         //有子菜单
         webMenuVO.getMeta().setHasSubMenu(true);
         List<WebMenuVO> list = new ArrayList<>();
         menuVO.getChildren().forEach(menu->{
            WebMenuVO webMenuVO1 = buildWebMenuVO(menu,levelTemp);
            list.add(webMenuVO1);
         });
         webMenuVO.setChildren(list);
      }else {
         //无子菜单
         webMenuVO.getMeta().setHasSubMenu(false);
      }
      return webMenuVO;
   }
}