瀏覽代碼

Merge branch 'dm' of http://8.136.199.33:3000/eta_server/eta_api into dm

kobe6258 2 月之前
父節點
當前提交
b4e5e0dbd1

+ 29 - 5
models/ai_summary/ai_summary_classify.go

@@ -304,7 +304,7 @@ func UpdateAiSummaryClassifySortByParentId(parentId, classifyId, nowSort int, up
 // 获取所有子级分类id
 func GetAiSummaryClassifySubcategories(classifyId int) (Ids string, err error) {
 	o := global.DbMap[utils.DbNameMaster]
-	sql := `SELECT GROUP_CONCAT(ai_summary_classify_id) AS ids
+	sql := fmt.Sprintf(`SELECT %s AS ids
 FROM (
 SELECT @pv := ? AS ai_summary_classify_id
 UNION ALL
@@ -312,14 +312,14 @@ SELECT sc.ai_summary_classify_id
 FROM ai_summary_classify sc
 JOIN (SELECT @pv := ?) initial
 WHERE sc.parent_id = @pv
-) subcategories; `
+) subcategories; `, utils.GroupUnitFunc(utils.DbDriverName, "ai_summary_classify_id", ",", false, "", "", false))
 	err = o.Raw(sql, classifyId, classifyId).Scan(&Ids).Error
 	return
 }
 
 func GetAiSummaryClassify(aiSummaryClassify int) (aiSummaryClassifyIds string, err error) {
 	o := global.DbMap[utils.DbNameMaster]
-	sql := `SELECT GROUP_CONCAT(t.ai_summary_classify_id) AS ai_summary_classify_id FROM (
+	sql :=fmt.Sprintf(`SELECT %s AS ai_summary_classify_id FROM (
 			SELECT a.ai_summary_classify_id FROM ai_summary_classify AS a 
 			WHERE a.ai_summary_classify_id=?
 			UNION ALL
@@ -331,14 +331,37 @@ func GetAiSummaryClassify(aiSummaryClassify int) (aiSummaryClassifyIds string, e
 		ai_summary_classify 
 WHERE
 	parent_id IN ( SELECT ai_summary_classify_id FROM ai_summary_classify WHERE parent_id = ? )
-			)AS t`
+			)AS t`, utils.GroupUnitFunc(utils.DbDriverName, "t.ai_summary_classify_id", ",", false, "", "", false))
 	err = o.Raw(sql, aiSummaryClassify, aiSummaryClassify, aiSummaryClassify).Scan(&aiSummaryClassifyIds).Error
 	return
 }
 
 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
 }

+ 2 - 2
models/data_manage/edb_classify.go

@@ -655,7 +655,7 @@ func FixPredictEdbClassify() {
 
 func GetEdbClassify(classifyId int) (classifyIds string, err error) {
 	//o := orm.NewOrmUsingDB("data")
-	sql := `SELECT GROUP_CONCAT(t.classify_id) AS classify_ids FROM (
+	sql :=fmt.Sprintf( `SELECT %s AS classify_ids FROM (
 			SELECT a.classify_id FROM edb_classify AS a 
 			WHERE a.classify_id=?
 			UNION ALL
@@ -667,7 +667,7 @@ func GetEdbClassify(classifyId int) (classifyIds string, err error) {
 		edb_classify 
 WHERE
 	parent_id IN ( SELECT classify_id FROM edb_classify WHERE parent_id = ? )
-			)AS t`
+			)AS t`, utils.GroupUnitFunc(utils.DbDriverName, "t.classify_id", ",", false, "", "", false))
 	//err = o.Raw(sql, classifyId, classifyId, classifyId).QueryRow(&classifyIds)
 	err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId, classifyId, classifyId).Scan(&classifyIds).Error
 	return

+ 2 - 2
models/data_manage/edb_info_calculate.go

@@ -122,11 +122,11 @@ type EdbInfoCalculateEditReq struct {
 
 func GetCalculateEdbInfo(edbInfoId int) (from_edb_info_id string, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT GROUP_CONCAT(from_edb_info_id ORDER BY sort ASC SEPARATOR ',') AS from_edb_info_id 
+	sql := fmt.Sprintf(` SELECT %s AS from_edb_info_id 
 			FROM edb_info_calculate_mapping
 			WHERE edb_info_id=?
 			GROUP BY edb_info_id
-			 `
+			`, utils.GroupUnitFunc(utils.DbDriverName, "from_edb_info_id", ",", true, "sort", "ASC", false))
 	err = o.Raw(sql, edbInfoId).Scan(&from_edb_info_id).Error
 	return
 }

+ 27 - 3
models/sandbox/sandbox.go

@@ -5,8 +5,9 @@ import (
 	"eta/eta_api/models/system"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 // Sandbox 沙盘推演主表
@@ -240,7 +241,28 @@ func GetSandboxInfoByAdminId(adminId int) (items []*SandboxClassifyItems, err er
 
 func GetSandboxClassify(sandboxClassifyId int) (sandbox_classify_id string, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT GROUP_CONCAT(t.sandbox_classify_id) AS sandbox_classify_id FROM (
+	var sql string
+	var pars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql =  `WITH RECURSIVE classify_tree (sandbox_classify_id, level) AS (
+			-- 获取指定分类
+			SELECT sandbox_classify_id, 1 as level
+			FROM sandbox_classify 
+			WHERE sandbox_classify_id = ?
+			
+			UNION ALL
+			
+			-- 获取子分类和孙子分类
+			SELECT sc.sandbox_classify_id, ct.level + 1
+			FROM sandbox_classify sc
+			JOIN classify_tree ct ON sc.parent_id = ct.sandbox_classify_id
+			WHERE ct.level <= 2  -- 限制只查询到孙子层级
+		)
+		SELECT LISTAGG(sandbox_classify_id, ',') WITHIN GROUP (ORDER BY level, sandbox_classify_id) AS sandbox_classify_id
+		FROM classify_tree`
+		pars = append(pars, sandboxClassifyId)
+	}else{
+		sql = `SELECT GROUP_CONCAT(t.sandbox_classify_id) AS sandbox_classify_id FROM (
 			SELECT a.sandbox_classify_id FROM sandbox_classify AS a 
 			WHERE a.sandbox_classify_id=?
 			UNION ALL
@@ -253,7 +275,9 @@ func GetSandboxClassify(sandboxClassifyId int) (sandbox_classify_id string, err
 WHERE
 	parent_id IN ( SELECT sandbox_classify_id FROM sandbox_classify WHERE parent_id = ? )
 			)AS t`
-	err = o.Raw(sql, sandboxClassifyId, sandboxClassifyId, sandboxClassifyId).Scan(&sandbox_classify_id).Error
+		pars = append(pars, sandboxClassifyId, sandboxClassifyId, sandboxClassifyId)
+	} 
+	err = o.Raw(sql, pars...).Scan(&sandbox_classify_id).Error
 	return
 }
 

+ 28 - 10
models/sandbox/sandbox_classify.go

@@ -326,16 +326,34 @@ type SandboxLinkCheckResp struct {
 // 获取所有子级分类id
 func GetSandboxClassifySubcategories(classifyId int) (Ids string, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	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).Scan(&Ids).Error
+	var sql string
+	var pars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+			sql = `WITH temp (sandbox_classify_id) AS (
+        SELECT sandbox_classify_id
+        FROM sandbox_classify 
+        WHERE sandbox_classify_id = ?
+        UNION ALL
+        SELECT sc.sandbox_classify_id
+        FROM sandbox_classify sc
+        WHERE sc.parent_id = ?
+    )
+    SELECT LISTAGG(sandbox_classify_id, ',') WITHIN GROUP (ORDER BY sandbox_classify_id) AS ids
+    FROM temp`
+		pars = append(pars, classifyId, classifyId)
+	}else{
+		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; `
+		pars = append(pars, classifyId, classifyId)
+	}
+	err = o.Raw(sql, pars...).Scan(&Ids).Error
 	return
 }
 

+ 4 - 3
models/variety_tag.go

@@ -3,6 +3,7 @@ package models
 import (
 	"eta/eta_api/global"
 	"eta/eta_api/utils"
+	"fmt"
 	"time"
 )
 
@@ -174,16 +175,16 @@ func GetAdminVarietyTagRelationListByAdminId(adminIds []int) (list []*AdminVarie
 		return
 	}
 	o := global.DbMap[utils.DbNameWeekly]
-	sql := `SELECT
+	sql := fmt.Sprintf(`SELECT
 				a.admin_id,
-				GROUP_CONCAT(b.tag_name) AS group_name_str
+				%s AS group_name_str
 			FROM
 				research_variety_tag_relation AS a
 			INNER JOIN variety_tag AS b ON a.variety_tag_id = b.variety_tag_id
 			WHERE
 				a.admin_id IN (` + utils.GetOrmInReplace(len(adminIds)) + `)
 			GROUP BY
-				a.admin_id`
+				a.admin_id`, utils.GroupUnitFunc(utils.DbDriverName, "b.tag_name", ",", false, "", "", false))
 	err = o.Raw(sql, adminIds).Find(&list).Error
 	return
 }

+ 5 - 1
utils/common.go

@@ -1825,9 +1825,13 @@ func GetDateByDateTypeV2(dateType int, tmpStartDate, tmpEndDate string, startYea
 
 func TimeTransferString(format string, t time.Time) string {
 	str := t.Format(format)
-	if t.IsZero() || t.UTC().IsZero() {
+	if t.IsZero() {
+		return ""
+	}
+	if strings.Contains(str, "0001-01-01") {
 		return ""
 	}
+
 	return str
 }