From eca6534ed2558167ebc5b01d3aecc2c3345832cd Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Sat, 23 Dec 2023 14:34:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java | 18 +++++++++++++++++-
src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml | 34 ++++++++++++++++++++++++++++++++--
src/main/java/org/springblade/modules/label/mapper/LabelMapper.java | 8 ++++++++
3 files changed, 57 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
index dfd46f0..a0bfb0a 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.java
@@ -54,4 +54,12 @@
@MapKey(value = "id")
Map<Integer, TreeIntegerNode> getLabelTreeList(@Param("label") LabelVO label);
+
+ /**
+ * 查询子集标签集合
+ * @param list
+ * @return
+ */
+ @MapKey(value = "id")
+ Map<Integer, TreeIntegerNode> getChildrenLabelList(@Param("list") List<Integer> list);
}
diff --git a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
index 3f51075..df5d89a 100644
--- a/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
+++ b/src/main/java/org/springblade/modules/label/mapper/LabelMapper.xml
@@ -30,10 +30,40 @@
<!--标签查询,按父id查询下级-->
<select id="getLabelList" resultType="org.springblade.common.node.TreeIntegerNode">
SELECT
- jl.id as id,jl.parent_id as parentId,jl.label_name as name
+ jl.id as id,jl.parent_id as parentId,jl.label_name as name,
+ (
+ SELECT
+ CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+ FROM
+ jczz_label
+ WHERE
+ parent_id = jl.id and is_deleted = 0
+ ) AS hasChildren
FROM
jczz_label jl
- where parent_id = #{label.parentId}
+ where is_deleted = 0
+ and parent_id = #{label.parentId}
+ </select>
+
+ <!--标签查询,按父id查询下级-->
+ <select id="getChildrenLabelList" resultType="org.springblade.common.node.TreeIntegerNode">
+ SELECT
+ jl.id as id,jl.parent_id as parentId,jl.label_name as name,
+ (
+ SELECT
+ CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+ FROM
+ jczz_label
+ WHERE
+ parent_id = jl.id and is_deleted = 0
+ ) AS hasChildren
+ FROM
+ jczz_label jl
+ where is_deleted = 0
+ and parent_id in
+ <foreach collection="list" separator="," item="id" open="(" close=")">
+ #{id}
+ </foreach>
</select>
diff --git a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
index 4749551..384908b 100644
--- a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
@@ -26,6 +26,7 @@
import org.springblade.modules.label.vo.LabelVO;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -50,7 +51,22 @@
*/
@Override
public Object getLabelList(LabelVO label) {
- return NodeTreeUtil.getNodeTree(baseMapper.getLabelList(label));
+ Map<Integer, TreeIntegerNode> labelList = baseMapper.getLabelList(label);
+ List<Integer> list = new ArrayList<>();
+ // 遍历
+ labelList.forEach((id, treeNode) -> {
+ if (treeNode.getHasChildren()){
+ list.add(id);
+ }
+ });
+ if (list.size()>0) {
+ // 查询子集
+ Map<Integer, TreeIntegerNode> childrenLabelList = baseMapper.getChildrenLabelList(list);
+ // 合并集合
+ labelList.putAll(childrenLabelList);
+ }
+ // 处理并返回
+ return NodeTreeUtil.getNodeTree(labelList);
}
@Override
--
Gitblit v1.9.3