xyxie пре 11 месеци
родитељ
комит
de3456e355
3 измењених фајлова са 69 додато и 1 уклоњено
  1. 15 1
      controllers/chart_classify.go
  2. 7 0
      models/chart_classify.go
  3. 47 0
      services/chart_classify.go

+ 15 - 1
controllers/chart_classify.go

@@ -858,7 +858,21 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 		condition += "  AND sys_user_id in (" + utils.GetOrmInReplace(len(adminIds)) + ") "
 		pars = append(pars, adminIdsSlice)
 	}
-	if chartClassifyId >= 0 {
+	if chartClassifyId > 0 {
+		// 查询所有子分类
+		childClassify, e, _ := services.GetChildClassifyByClassifyId(chartClassifyId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
+			return
+		}
+		var classifyIds []int
+		for _, v := range childClassify {
+			classifyIds = append(classifyIds, v.ChartClassifyId)
+		}
+		condition += fmt.Sprintf(` AND chart_classify_id IN (%s) `, utils.GetOrmInReplace(len(classifyIds)))
+		pars = append(pars, classifyIds)
+	} else if chartClassifyId == 0 {
 		condition += " AND chart_classify_id = ?"
 		pars = append(pars, chartClassifyId)
 	}

+ 7 - 0
models/chart_classify.go

@@ -151,6 +151,13 @@ func GetChartClassify() (items []*ChartClassifyItems, err error) {
 	return
 }
 
+func GetChartClassifyOrderByLevel() (items []*ChartClassifyItems, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM chart_classify order by level asc, sort asc,chart_classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 type ChartClassifyItems struct {
 	ChartClassifyId     int `description:"分类id"`
 	ChartInfoId         int `description:"指标id"`

+ 47 - 0
services/chart_classify.go

@@ -797,3 +797,50 @@ func GetClassifyTreeRecursive(list []*models.ChartClassifyItems, parentId int) [
 	}
 	return res
 }
+
+func GetChildClassifyByClassifyId(targetClassifyId int) (targetList []*models.ChartClassifyItems, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	targetClassify, err := models.GetChartClassifyById(targetClassifyId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	tmpList, err := models.GetChartClassifyOrderByLevel()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		errMsg = "获取失败"
+		err = errors.New("获取数据失败,Err:" + err.Error())
+		return
+	}
+	idMap := make(map[int]struct{})
+	if len(tmpList) > 0 {
+		for _, v := range tmpList {
+			if v.ChartClassifyId == targetClassify.ChartClassifyId {
+				idMap[v.ChartClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ParentId]; ok {
+				idMap[v.ChartClassifyId] = struct{}{}
+			}
+		}
+		for _, v := range tmpList {
+			if _, ok := idMap[v.ChartClassifyId]; ok {
+				targetItem := new(models.ChartClassifyItems)
+				targetItem.ChartClassifyId = v.ChartClassifyId
+				targetItem.ParentId = v.ParentId
+				targetItem.Level = v.Level
+				targetItem.ChartClassifyName = v.ChartClassifyName
+				targetItem.IsJoinPermission = v.IsJoinPermission
+				targetList = append(targetList, targetItem)
+			}
+		}
+	}
+
+	return
+}