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