xyxie 3 周之前
父节点
当前提交
fff8d718fa
共有 1 个文件被更改,包括 25 次插入1 次删除
  1. 25 1
      models/ai_summary/ai_summary_classify.go

+ 25 - 1
models/ai_summary/ai_summary_classify.go

@@ -338,7 +338,30 @@ WHERE
 
 func GetAiSummaryAllParentByClassifyId(aiSummaryClassifyId int) (ids string, err error) {
 	o := global.DbMap[utils.DbNameMaster]
-	sql := `SELECT
+	var sql string
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql = `WITH RECURSIVE parent_tree (ai_summary_classify_id, parent_id, level) AS (
+    -- 获取起始节点的父级
+    SELECT ai_summary_classify_id, parent_id, 1 as level
+    FROM ai_summary_classify
+    WHERE ai_summary_classify_id = (
+        SELECT parent_id 
+        FROM ai_summary_classify 
+        WHERE ai_summary_classify_id = ?
+    )
+    
+    UNION ALL
+    
+    -- 递归获取所有上级节点
+    SELECT ac.ai_summary_classify_id, ac.parent_id, pt.level + 1
+    FROM ai_summary_classify ac
+    JOIN parent_tree pt ON ac.ai_summary_classify_id = pt.parent_id
+    WHERE ac.parent_id IS NOT NULL
+)
+SELECT LISTAGG(ai_summary_classify_id, ',') WITHIN GROUP (ORDER BY level DESC) AS ids
+FROM parent_tree`
+	}else{
+	sql = `SELECT
 	GROUP_CONCAT(DISTINCT m.ai_summary_classify_id  ORDER BY m.level) AS ids 
 FROM
 	(
@@ -369,6 +392,7 @@ FROM
 	INNER JOIN ai_summary_classify m 
 WHERE
 	ai_summary_classify_id = vm._id `
+	}
 	err = o.Raw(sql, aiSummaryClassifyId).Scan(&ids).Error
 	return
 }