zwxi 6 сар өмнө
parent
commit
342f7ef8ad

+ 16 - 18
controllers/sandbox/sandbox.go

@@ -1704,17 +1704,25 @@ func (this *SandboxController) ListV2() {
 	}
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
+	classifyList, err := sandbox.GetAllSandboxClassify()
+	if err != nil && !utils.IsErrNoRow(err) {
+		br.Msg = "获取分类信息失败"
+		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
+		return
+	}
+	classsifyMap := make(map[int]*sandbox.SandboxClassifyItems)
+	for _, v := range classifyList {
+		classsifyMap[v.SandboxClassifyId] = v
+	}
+
 	var condition string
 	var pars []interface{}
 
 	if sandboxClassifyId > 0 {
-		sandboxClassifyId, err := sandbox.GetSandboxClassify(sandboxClassifyId)
-		if err != nil && !utils.IsErrNoRow(err) {
-			br.Msg = "获取图表信息失败"
-			br.ErrMsg = "获取信息失败,GetChartClassify,Err:" + err.Error()
-			return
-		}
-		condition += " AND sandbox_classify_id IN(" + sandboxClassifyId + ") "
+		childIds := make([]int, 0)
+		sandboxService.GetSandBoxClassifyChildIds(sandboxClassifyId, classsifyMap, &childIds)
+		ids := utils.IntArr2joinString(childIds,",")
+		condition += " AND sandbox_classify_id IN(" + ids + ") "
 		//pars = append(pars, chartClassifyId)
 	}
 	if keyWord != "" {
@@ -1738,20 +1746,10 @@ func (this *SandboxController) ListV2() {
 		return
 	}
 
-	classifyList, err := sandbox.GetAllSandboxClassify()
-	if err != nil && !utils.IsErrNoRow(err) {
-		br.Msg = "获取分类信息失败"
-		br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
-		return
-	}
-	classsifyMap := make(map[int]*sandbox.SandboxClassifyItems)
-	for _, v := range classifyList {
-		classsifyMap[v.SandboxClassifyId] = v
-	}
 
 	for i, v := range list {
 		parentIds := make([]int, 0)
-		sandboxService.GetSandBoxParentIds(v.SandboxClassifyId, classsifyMap, parentIds)
+		sandboxService.GetSandBoxParentIds(v.SandboxClassifyId, classsifyMap, &parentIds)
 		ids := utils.IntArr2joinString(parentIds,",")
 		list[i].ParentIds = ids
 	}

+ 14 - 2
services/sandbox/sandbox.go

@@ -959,9 +959,21 @@ func ReplaceEdbInSandbox(oldEdbInfoId, newEdbInfoId int) (err error) {
 	return
 }
 
-func GetSandBoxParentIds(classifyId int, classifymap map[int]*sandbox.SandboxClassifyItems, parentIds []int) {
+func GetSandBoxParentIds(classifyId int, classifymap map[int]*sandbox.SandboxClassifyItems, parentIds *[]int) {
 	if item, ok := classifymap[classifyId]; ok {
-		parentIds = append(parentIds, item.ParentId)
+		if item.ParentId == 0 {
+			return
+		}
+		*parentIds = append(*parentIds, item.ParentId)
 		GetSandBoxParentIds(item.ParentId, classifymap, parentIds)
 	}
+}
+
+func GetSandBoxClassifyChildIds(classifyId int, classifymap map[int]*sandbox.SandboxClassifyItems, childIds *[]int) {
+	for _, item := range classifymap {
+		if item.ParentId == classifyId {
+			*childIds = append(*childIds, item.SandboxClassifyId)
+			GetSandBoxClassifyChildIds(item.SandboxClassifyId, classifymap, childIds)
+		}
+	}
 }