hongze 5 ay önce
ebeveyn
işleme
b9f3dfcd6c
1 değiştirilmiş dosya ile 22 ekleme ve 10 silme
  1. 22 10
      models/sandbox/sandbox_classify.go

+ 22 - 10
models/sandbox/sandbox_classify.go

@@ -308,17 +308,29 @@ type SandboxLinkCheckResp struct {
 // GetSandboxClassifySubcategories 获取所有子级分类id
 func GetSandboxClassifySubcategories(classifyId int) (Ids string, err error) {
 	//o := orm.NewOrmUsingDB("data")
-	sql := `SELECT GROUP_CONCAT(sandbox_classify_id) AS ids
-FROM (
-SELECT @pv := ? AS sandbox_classify_id
-UNION ALL
-SELECT sc.sandbox_classify_id
-FROM sandbox_classify sc
-JOIN (SELECT @pv := ?) initial
-WHERE sc.parent_id = @pv
-) subcategories; `
+	//	sql := `SELECT GROUP_CONCAT(sandbox_classify_id) AS ids
+	//FROM (
+	//SELECT @pv := ? AS sandbox_classify_id
+	//UNION ALL
+	//SELECT sc.sandbox_classify_id
+	//FROM sandbox_classify sc
+	//JOIN (SELECT @pv := ?) initial
+	//WHERE sc.parent_id = @pv
+	//) subcategories; `
 	//err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
-	err = global.DmSQL["data"].Raw(sql, classifyId, classifyId).First(&Ids).Error
+
+	sql := `WITH RECURSIVE Subcategories (sandbox_classify_id) AS (  
+    SELECT ? AS sandbox_classify_id  
+    FROM DUAL  
+    UNION ALL  
+    SELECT sc.sandbox_classify_id  
+    FROM "eta_index".sandbox_classify sc  
+    JOIN Subcategories s  
+    ON sc.parent_id = s.sandbox_classify_id  
+)  
+SELECT LISTAGG(sandbox_classify_id, ',') WITHIN GROUP (ORDER BY sandbox_classify_id) AS ids  
+FROM Subcategories;`
+	err = global.DmSQL["data"].Raw(sql, classifyId).First(&Ids).Error
 	return
 }