Parcourir la source

1.控制台菜单树形找不到父级菜单

wuhp il y a 1 an
Parent
commit
dacf4b9d27

+ 47 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysMenuServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -140,6 +141,51 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         return sysMenus;
     }
 
+    private List<SysMenu> getSysMenusNew(String sysType, int menuType,String userId) {
+        List<SysMenu> sysMenus = new ArrayList<>();
+        List<SysMenu> menus  =new ArrayList<>();
+        if(StringUtils.isBlank(userId) || (StringUtils.isNotBlank(userId) && "admin".equals(userId))){
+            //  LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
+            //  lqw.eq(SysMenu::getDelFlag, 0);
+            // lqw.eq(SysMenu::getSysType, sysType);
+            menus= sysMenuMapper.findBySysTypeList(sysType,"0");
+            // menus = list(lqw);
+        }else{
+            menus= sysRoleMenuService.gainMenuIdsByUserId(userId,sysType);
+        }
+        //填充父级菜单数据
+        this.addParentMenu(menus);
+
+        for (SysMenu menu : menus) {
+            if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
+                menu.setLevel(0);
+                if (!exists(sysMenus, menu)) {
+                    sysMenus.add(menu);
+                }
+            }
+        }
+        sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()));
+        findChildren(sysMenus, menus, menuType);
+        return sysMenus;
+    }
+
+    private void addParentMenu(List<SysMenu>   menus) {
+        List<String> menuIds = menus.stream().map(SysMenu::getId).collect(Collectors.toList()); //menuIds
+        for (String menuId : menuIds) {
+            this.addParentId(menuId,menuIds,menus);
+        }
+    }
+
+    private void addParentId(String menuId, List<String> menuIds, List<SysMenu> menus) {
+        SysMenu sysMenu = baseMapper.selectById(menuId);
+        if(ObjectUtils.isNotEmpty(sysMenu)){
+            if( !menuIds.contains(sysMenu.getParentId())){
+                menus.add(sysMenu);
+                this.addParentId(sysMenu.getParentId(),menuIds,menus);
+            }
+        }
+    }
+
     private List<SysMenu> getSysMenus(String sysType, int menuType,String userId) {
         List<SysMenu> sysMenus = new ArrayList<>();
         List<SysMenu> menus  =new ArrayList<>();
@@ -173,7 +219,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
      */
     @Override
     public List<SysMenu> findMenuListByUserId(String userId, String sysType) {
-        return getSysMenus(sysType,0,userId);
+        return getSysMenusNew(sysType,0,userId);
     }