From b1783088172caa6e18e4c267588c2cf29bf11f40 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Wed, 8 Dec 2021 20:28:13 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=A0=91=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flyfish/framework/domain/base/TreeDomain.java | 3 +++ .../com/flyfish/framework/domain/base/TreeQo.java | 14 ++++++++++++-- .../reactive/ReactiveTreeController.java | 5 +++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeDomain.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeDomain.java index 5dd1748..d9ed037 100644 --- a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeDomain.java +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeDomain.java @@ -15,6 +15,9 @@ public abstract class TreeDomain> extends AuditDomain { // 父id,顶级是0 private String parentId; + // 冗余的父ids,方便查询 + private List parentIds; + // 深度,遍历标识 private Integer depth; diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeQo.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeQo.java index 585a097..cfae550 100644 --- a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeQo.java +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/TreeQo.java @@ -3,6 +3,8 @@ package com.flyfish.framework.domain.base; import com.flyfish.framework.builder.CriteriaBuilder; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.data.mongodb.core.query.Criteria; import java.util.List; @@ -19,9 +21,17 @@ public class TreeQo extends NameLikeQo { private List parentIds; + private Boolean recursive; + @Override public CriteriaBuilder criteriaBuilder() { - return super.criteriaBuilder() - .with("depth", "parentId").with("parentIds", "parentId", CriteriaBuilder.Builders.IN); + CriteriaBuilder builder = super.criteriaBuilder().with("depth"); + if (BooleanUtils.isTrue(recursive)) { + builder.with("parentId", "parentIds", Criteria::is) + .with("parentIds", "parentIds", Criteria::is); + } else { + builder.with("parentId").with("parentIds", "parentId", CriteriaBuilder.Builders.IN); + } + return builder; } } diff --git a/flyfish-web/src/main/java/com/flyfish/framework/controller/reactive/ReactiveTreeController.java b/flyfish-web/src/main/java/com/flyfish/framework/controller/reactive/ReactiveTreeController.java index cbb319c..8ea28dc 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/controller/reactive/ReactiveTreeController.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/controller/reactive/ReactiveTreeController.java @@ -1,8 +1,8 @@ package com.flyfish.framework.controller.reactive; import com.flyfish.framework.bean.Result; -import com.flyfish.framework.domain.base.Qo; import com.flyfish.framework.domain.base.TreeDomain; +import com.flyfish.framework.domain.base.TreeQo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -20,7 +20,7 @@ import java.util.stream.Collectors; * @param * @param */ -public abstract class ReactiveTreeController, Q extends Qo> extends ReactiveBaseController { +public abstract class ReactiveTreeController, Q extends TreeQo> extends ReactiveBaseController { /** * 获取权限树 @@ -29,6 +29,7 @@ public abstract class ReactiveTreeController, Q extends */ @GetMapping("tree") public Mono>> getTree(Q qo) { + qo.setRecursive(true); // 第一步,查询全部,并根据条件筛选 return reactiveService.getList(qo) .collectList()