From 79ddf4252f52f2da6075a83fa6171082234f9bb2 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 3 Mar 2022 10:24:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A2=86=E5=9F=9F=E6=A0=91?= =?UTF-8?q?=E5=BD=A2=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysCategoryController.java | 4 ++ .../system/entity/SysCategoryTreeVO.java | 22 ++++++++ .../system/service/ISysCategoryService.java | 7 +++ .../service/impl/SysCategoryServiceImpl.java | 20 ++++++++ .../jero/modules/system/util/TreeUtils.java | 51 +++++++++++++++++++ 5 files changed, 104 insertions(+) create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysCategoryTreeVO.java create mode 100644 jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/TreeUtils.java diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysCategoryController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysCategoryController.java index 12e9c089c..71260c14e 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysCategoryController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysCategoryController.java @@ -516,5 +516,9 @@ public class SysCategoryController { } } + @GetMapping("/getSysCategoryTree") + public Result getSysCategoryTree() { + return sysCategoryService.getSysCategoryTree(); + } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysCategoryTreeVO.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysCategoryTreeVO.java new file mode 100644 index 000000000..791df3339 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysCategoryTreeVO.java @@ -0,0 +1,22 @@ +package com.jero.modules.system.entity; + +import lombok.Data; + +import java.util.List; +/** + * 树形VO + *@Author: wzj + *@Date: 2022/3/3 09:00 + **/ +@Data +public class SysCategoryTreeVO { + + private String id; + + private String parentId; + + private String title; + + private List children; + +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysCategoryService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysCategoryService.java index af19e34f9..c28a7a6cd 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysCategoryService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysCategoryService.java @@ -1,6 +1,7 @@ package com.jero.modules.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; import com.jero.modules.system.entity.SysCategory; import com.jero.modules.system.model.TreeSelectModel; @@ -64,4 +65,10 @@ public interface ISysCategoryService extends IService { * @return */ List queryBySysDictId(String sysDictId); + + /** + * 获取树形结构 + * @return + */ + Result getSysCategoryTree(); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysCategoryServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysCategoryServiceImpl.java index cbaa96bbb..37ebe7271 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysCategoryServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysCategoryServiceImpl.java @@ -6,17 +6,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; import com.jero.common.constant.FillRuleConstant; import com.jero.common.exception.JeroBootException; import com.jero.common.util.FillRuleUtil; import com.jero.common.util.oConvertUtils; import com.jero.modules.system.entity.SysCategory; +import com.jero.modules.system.entity.SysCategoryTreeVO; import com.jero.modules.system.mapper.SysCategoryMapper; import com.jero.modules.system.model.TreeSelectModel; import com.jero.modules.system.service.ISysCategoryService; +import com.jero.modules.system.util.TreeUtils; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -214,4 +219,19 @@ public class SysCategoryServiceImpl extends ServiceImpl list = super.baseMapper.selectList(new QueryWrapper<>()); + List tree = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(list)){ + tree = TreeUtils.getSysCategoryTree(list); + } + return Result.OK(tree); + }catch (Exception ex){ + log.error("查询树形结构失败: " + ex.getMessage()); + throw new JeroBootException("查询树形结构失败!"); + } + } } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/TreeUtils.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/TreeUtils.java new file mode 100644 index 000000000..3574683c7 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/util/TreeUtils.java @@ -0,0 +1,51 @@ +package com.jero.modules.system.util; + +import com.jero.modules.system.entity.SysCategory; +import com.jero.modules.system.entity.SysCategoryTreeVO; +import org.springframework.stereotype.Component; + +import java.util.LinkedList; +import java.util.List; + +/** + *生成树形结构工具类 + *@Author: wzj + *@Date: 2022/3/3 09:02 + **/ +@Component +public class TreeUtils { + /** + * 根节点CODE + */ + private static final String TREE_ROOT_CODE = "0"; + + public static List getSysCategoryTree(List sysCategoryList) { + List sysCategoryTreeVOList = new LinkedList(); + for (SysCategory sysCategory : sysCategoryList) { + if (TREE_ROOT_CODE.equals(sysCategory.getPid())) { + SysCategoryTreeVO sysCategoryTreeVO = new SysCategoryTreeVO(); + sysCategoryTreeVO.setId(sysCategory.getId()); + sysCategoryTreeVO.setTitle(sysCategory.getName()); + sysCategoryTreeVO.setParentId(sysCategory.getPid()); + sysCategoryTreeVO.setChildren(getSysCategoryTreeChild(sysCategory.getId(), sysCategoryList)); + sysCategoryTreeVOList.add(sysCategoryTreeVO); + } + } + return sysCategoryTreeVOList; + } + + private static List getSysCategoryTreeChild(String id, List sysCategoryList) { + List childrenList = new LinkedList(); + for (SysCategory sysCategory : sysCategoryList) { + if (id.equals(sysCategory.getPid())) { + SysCategoryTreeVO sysCategoryTreeVO = new SysCategoryTreeVO(); + sysCategoryTreeVO.setId(sysCategory.getId()); + sysCategoryTreeVO.setTitle(sysCategory.getName()); + sysCategoryTreeVO.setParentId(sysCategory.getPid()); + sysCategoryTreeVO.setChildren(getSysCategoryTreeChild(sysCategory.getId(), sysCategoryList)); + childrenList.add(sysCategoryTreeVO); + } + } + return childrenList; + } +}