fanxp il y a 2 ans
Parent
commit
3ebbbf2af1

+ 9 - 0
src/main/java/com/xjrsoft/module/system/controller/MenuController.java

@@ -17,6 +17,7 @@ import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.enums.MenuType;
 import com.xjrsoft.common.enums.YesOrNoEnum;
 import com.xjrsoft.common.model.result.R;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.authority.entity.DataAuth;
@@ -83,6 +84,14 @@ public class MenuController {
         return R.ok(treeVoList);
     }
 
+    @GetMapping("/serve")
+    @ApiOperation(value = "获取菜单服务")
+    public RT<List<MenuServeVo>> menuServe() {
+        List<MenuServeVo> list = menuService.getAuthMenuServe();
+
+        return RT.ok(list);
+    }
+
     @GetMapping("/all-tree")
     @ApiOperation(value = "获取所有菜单(树结构)")
     public R allMenuTree(@Valid MenuTreeDto dto) {

+ 3 - 0
src/main/java/com/xjrsoft/module/system/service/IMenuService.java

@@ -4,6 +4,7 @@ import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.system.dto.MenuTreeDto;
 import com.xjrsoft.module.system.entity.Menu;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xjrsoft.module.system.vo.MenuServeVo;
 import com.xjrsoft.module.system.vo.MenuTreeVo;
 import com.xjrsoft.module.system.vo.MenuVo;
 
@@ -20,4 +21,6 @@ import java.util.List;
 public interface IMenuService extends MPJBaseService<Menu> {
 
     List<MenuVo> getAuthMenuList(MenuTreeDto dto);
+
+    List<MenuServeVo> getAuthMenuServe();
 }

+ 57 - 13
src/main/java/com/xjrsoft/module/system/service/impl/MenuServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.system.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -10,6 +11,8 @@ import com.github.yulichang.toolkit.MPJWrappers;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.AuthorizeType;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.model.tree.ITreeNode;
+import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
@@ -20,13 +23,13 @@ import com.xjrsoft.module.system.entity.Subsystem;
 import com.xjrsoft.module.system.mapper.AuthorizeMapper;
 import com.xjrsoft.module.system.mapper.MenuMapper;
 import com.xjrsoft.module.system.service.IMenuService;
+import com.xjrsoft.module.system.vo.MenuServeVo;
 import com.xjrsoft.module.system.vo.MenuTreeVo;
 import com.xjrsoft.module.system.vo.MenuVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -68,16 +71,57 @@ public class MenuServiceImpl extends MPJBaseServiceImpl<MenuMapper, Menu> implem
 
         return this.selectJoinList(MenuVo.class,
                 MPJWrappers.<Menu>lambdaJoin()
-                    .like(StrUtil.isNotBlank(dto.getTitle()), Menu::getTitle, dto.getTitle())
-                    .like(StrUtil.isNotBlank(dto.getCode()), Menu::getCode, dto.getCode())
-                    .like(StrUtil.isNotBlank(dto.getName()), Menu::getName, dto.getName())
-    //                .like(ObjectUtil.isNotEmpty(dto.getEnabledMark()), Menu::getEnabledMark, dto.getEnabledMark())
-                    .in(CollectionUtils.isNotEmpty(authMenuIdList), Menu::getId, authMenuIdList)
-                    .select(Menu::getId)
-                    .selectAs(Subsystem::getName, MenuVo::getSystemName)
-                    .select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuTreeVo.class).contains(x.getProperty()))
-                    .leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
-                    .eq(Menu::getEnabledMark, EnabledMark.ENABLED.getCode())
-                    .orderByAsc(Menu::getSortCode));
+                        .like(StrUtil.isNotBlank(dto.getTitle()), Menu::getTitle, dto.getTitle())
+                        .like(StrUtil.isNotBlank(dto.getCode()), Menu::getCode, dto.getCode())
+                        .like(StrUtil.isNotBlank(dto.getName()), Menu::getName, dto.getName())
+                        //                .like(ObjectUtil.isNotEmpty(dto.getEnabledMark()), Menu::getEnabledMark, dto.getEnabledMark())
+                        .in(CollectionUtils.isNotEmpty(authMenuIdList), Menu::getId, authMenuIdList)
+                        .select(Menu::getId)
+                        .selectAs(Subsystem::getName, MenuVo::getSystemName)
+                        .select(Menu.class, x -> VoToColumnUtil.fieldsToColumns(MenuTreeVo.class).contains(x.getProperty()))
+                        .leftJoin(Subsystem.class, Subsystem::getId, Menu::getSystemId)
+                        .eq(Menu::getEnabledMark, EnabledMark.ENABLED.getCode())
+                        .orderByAsc(Menu::getSortCode));
+    }
+
+    /**
+     * 查询用户菜单服务
+     */
+    @Override
+    public List<MenuServeVo> getAuthMenuServe() {
+        List<MenuVo> menuVos = getAuthMenuList(new MenuTreeDto());
+
+        Map<Long, MenuServeVo> menuVoMap = new HashMap<>();
+        List<MenuVo> notParents = new ArrayList<>();
+
+        menuVos.forEach((node) -> {
+            Long parentId = node.getParentId();
+
+            //如果在List里面 找不到当前节点的父节点,则当前节点为顶级节点
+            if (menuVos.stream().noneMatch(x -> StrUtil.equals(x.getId().toString(), String.valueOf(parentId)))) {
+                if (!menuVoMap.containsKey(node.getSystemId())) {
+                    MenuServeVo ms = new MenuServeVo();
+                    ms.setId(node.getSystemId());
+                    ms.setName(node.getSystemName());
+                    ms.setMenuVoList(new ArrayList<>());
+                    ms.getMenuVoList().add(node);
+                    menuVoMap.put(node.getSystemId(),ms);
+                }
+                notParents.add(node);
+            }
+
+            if (!StrUtil.isEmptyIfStr(parentId) || !StrUtil.equals(String.valueOf(parentId), String.valueOf(GlobalConstant.FIRST_NODE_VALUE))) {
+                menuVos.stream().filter(x -> StrUtil.equals(x.getId().toString(), String.valueOf(parentId)))
+                        .findAny()
+                        .ifPresent(parentNode -> {
+                            System.out.println();
+                        });
+            }
+        });
+//        Map<Long, MenuVo> menuVoMap = new HashMap<>();
+//        notParents.forEach((node) -> {
+//
+//        });
+        return new ArrayList<>(menuVoMap.values());
     }
 }

+ 18 - 0
src/main/java/com/xjrsoft/module/system/vo/MenuServeVo.java

@@ -0,0 +1,18 @@
+package com.xjrsoft.module.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MenuServeVo {
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("系统名")
+    private String name;
+
+    @ApiModelProperty("菜单")
+    private List<MenuVo> menuVoList;
+}