guoshilong
2023-04-22 b2d5c9a45bb97f34112f79eb56db8404ddda6725
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);
      }
@@ -294,4 +297,60 @@
      return saveOrUpdate(menu);
   }
   @Override
   public List<MenuVO> getAppMenu(String roleId) {
      return baseMapper.selectAppMenu(roleId);
   }
   @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());
      if (list.size()>0){
         MenuVO menuVO = list.get(0);
//         int level = 0;
         WebMenuVO webMenuVO = buildWebMenuVO(menuVO);
         return webMenuVO.getChildren();
      }else {
         return null;
      }
   }
   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;
   }
}