Browse Source

菜单树形数据接口

xucaiqin 1 year ago
parent
commit
6e1010780d

+ 6 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/MenuController.java

@@ -2,6 +2,7 @@ package com.middle.platform.system.biz.controller;
 
 import com.middle.platform.common.utils.Result;
 import com.middle.platform.system.biz.entity.SysMenu;
+import com.middle.platform.system.biz.pojo.res.MenuTree;
 import com.middle.platform.system.biz.service.SysMenuService;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -30,4 +31,9 @@ public class MenuController {
     public Result<List<SysMenu>> list() {
         return Result.ok(sysMenuService.list());
     }
+
+    @GetMapping("/tree")
+    public Result<List<MenuTree>> tree() {
+        return Result.ok(sysMenuService.tree());
+    }
 }

+ 60 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/res/MenuTree.java

@@ -0,0 +1,60 @@
+package com.middle.platform.system.biz.pojo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 菜单权限表
+ *
+ * @author xucaiqin
+ * @date 2023-12-18 15:17:33
+ */
+@Getter
+@Setter
+public class MenuTree {
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 父菜单ID
+     */
+    private Long pid;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 权限标识
+     */
+    private String permission;
+
+    /**
+     * 菜单类型 1-菜单 2-功能
+     */
+    private Integer type;
+
+    /**
+     * 显示顺序
+     */
+    private Integer sort;
+
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 子集
+     */
+    private List<MenuTree> children;
+}

+ 1 - 1
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysDictItemService.java

@@ -41,7 +41,7 @@ public class SysDictItemService {
      */
     public PageRes<SysDictItemVo> list(Long dictId, BasePara basePara) {
         PageHelper.startPage(basePara.getPage(), basePara.getPageSize());
-        List<SysDictItem> sysDictItems = sysDictItemMapper.selectList(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId, dictId));
+        List<SysDictItem> sysDictItems = sysDictItemMapper.selectList(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId, dictId).eq(SysDictItem::getDelFlag, Global.UN_DEL));
         if (CollectionUtils.isEmpty(sysDictItems)) {
             return new PageRes<>(basePara.getPage(), basePara.getPageSize());
         }

+ 26 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysMenuService.java

@@ -1,13 +1,19 @@
 package com.middle.platform.system.biz.service;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.middle.platform.common.constant.Global;
 import com.middle.platform.system.biz.entity.SysMenu;
 import com.middle.platform.system.biz.mapper.SysMenuMapper;
+import com.middle.platform.system.biz.pojo.res.MenuTree;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author xucaiqin
@@ -21,4 +27,24 @@ public class SysMenuService {
     public List<SysMenu> list() {
         return sysMenuMapper.selectList(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDelFlag, Global.UN_DEL));
     }
+
+    public List<MenuTree> tree() {
+        List<SysMenu> sysMenus = sysMenuMapper.selectList(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDelFlag, Global.UN_DEL));
+        if (CollUtil.isEmpty(sysMenus)) {
+            return new ArrayList<>();
+        }
+        return sysMenus.stream().filter(d -> Objects.equals(0L, d.getPid())).map(d -> {
+            MenuTree menuTree = BeanUtil.toBean(d, MenuTree.class);
+            menuTree.setChildren(findChild(sysMenus, menuTree));
+            return menuTree;
+        }).toList();
+    }
+
+    public List<MenuTree> findChild(List<SysMenu> all, MenuTree item) {
+        return all.stream().filter(d -> Objects.equals(d.getPid(), item.getId())).map(d -> {
+            MenuTree bean = BeanUtil.toBean(d, MenuTree.class);
+            bean.setChildren(findChild(all, bean));
+            return bean;
+        }).collect(Collectors.toList());
+    }
 }