Browse Source

#ADD 系统部门树

谭斌 2 years ago
parent
commit
6eab732d55

+ 6 - 1
authorize-api-service/src/main/java/com/xy/entity/SysDept.java

@@ -23,7 +23,8 @@ public class SysDept extends BaseEntity2<SysDept> {
     /**
      * 父id;多个,号分隔
      */
-    private String paterId;
+    private Long parentId;
+
 
     /**
      * 系统id
@@ -49,5 +50,9 @@ public class SysDept extends BaseEntity2<SysDept> {
      * 状态;1=启用 2=禁用
      */
     private Integer status;
+    /**
+     * 排序
+     */
+    private Integer sortNum;
 
 }

+ 0 - 16
authorize-api-service/src/main/java/com/xy/service/SysDeptService.java

@@ -1,16 +0,0 @@
-package com.xy.service;
-
-import com.xy.annotate.RestMappingController;
-
-/**
- * <p>
- * 部门表; 服务类
- * </p>
- *
- * @author lijin
- * @since 2022-12-09
- */
-@RestMappingController("sys-dept")
-public interface SysDeptService {
-
-}

+ 49 - 8
authorize-api-service/src/main/java/com/xy/service/impl/SysDeptServiceImpl.java

@@ -1,20 +1,61 @@
 package com.xy.service.impl;
 
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.entity.SysDept;
 import com.xy.mapper.SysDeptMapper;
 import com.xy.service.SysDeptService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
 import org.springframework.stereotype.Service;
 
-/**
- * <p>
- * 部门表; 服务实现类
- * </p>
- *
- * @author lijin
- * @since 2022-12-09
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/***
+ * 部门管理实现类
+ * @author 谭斌
+ * @date 2022/12/13 14:01
  */
+@Api(tags = "部门管理")
 @Service
 public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
 
+    @Override
+    public R<List<Tree<Long>>> deptTrees(Long sysId) {
+        List<Tree<Long>> deptTree = getDeptTree(this.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getSysId, sysId)), 0L);
+        return R.ok(deptTree);
+    }
+
+    /**
+     * 获得部门树
+     *
+     * @param deptList 部门集合
+     * @param parentId 父级id
+     * @return
+     */
+    private List<Tree<Long>> getDeptTree(List<SysDept> deptList, Long parentId) {
+        List<TreeNode<Long>> collect = deptList.stream().filter(dept -> dept.getId() != dept.getParentId())
+                .sorted(Comparator.comparingInt(SysDept::getSortNum)).map(dept -> {
+                    TreeNode<Long> treeNode = new TreeNode();
+                    treeNode.setId(dept.getId());
+                    treeNode.setParentId(dept.getParentId());
+                    treeNode.setName(dept.getName());
+                    treeNode.setWeight(dept.getSortNum());
+                    // 扩展属性
+                    Map<String, Object> extra = new HashMap<>(16);
+                    extra.put("createTime", dept.getCreateTime());
+                    extra.put("code", dept.getCode());
+                    treeNode.setExtra(extra);
+                    return treeNode;
+                }).collect(Collectors.toList());
+
+        return TreeUtil.build(collect, parentId);
+    }
 }

+ 25 - 0
authorize-api/src/main/java/com/xy/service/SysDeptService.java

@@ -0,0 +1,25 @@
+package com.xy.service;
+
+import cn.hutool.core.lang.tree.Tree;
+import com.xy.annotate.RestMappingController;
+import com.xy.utils.R;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/***
+ * 部门管理服务类
+ * @author 谭斌
+ * @date 2022/12/12 16:37
+ */
+@RestMappingController("sysDept")
+public interface SysDeptService {
+
+
+    @ApiOperation(value = "系统部门树", notes = "系统部门树")
+    @GetMapping("tree/{sysId}")
+    R<List<Tree<Long>>> deptTrees(@PathVariable Long sysId);
+
+}