package data import ( "fmt" "hongze/hongze_chart_lib/models/data_manage" ) func ChartClassifyListMakeTree(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) { childs, _ := chartClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回 allChartInfo, _ := GetChartClassifyChartInfo() if len(childs) > 0 { node.Children = append(node.Children, childs[0:]...) //添加子节点 for _, v := range childs { //查询子节点的子节点,并添加到子节点 _, has := chartClassifyHaveChild(allNode, v) if has { ChartClassifyListMakeTree(allNode, v) //递归添加节点 } else { fmt.Println(v.ChartClassifyId) edbInfoList := allChartInfo[v.ChartClassifyId] v.Children = edbInfoList if v.Children == nil { childrenArr := make([]*data_manage.ChartClassifyItems, 0) v.Children = childrenArr } } } } else { childrenArr := make([]*data_manage.ChartClassifyItems, 0) node.Children = childrenArr } } func chartClassifyHaveChild(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) (childs []*data_manage.ChartClassifyItems, yes bool) { for _, v := range allNode { if v.ParentId == node.ChartClassifyId { childs = append(childs, v) } } if len(childs) > 0 { yes = true } return } func GetChartClassifyChartInfo() (result map[int][]*data_manage.ChartClassifyItems, err error) { cMap := make(map[int][]*data_manage.ChartClassifyItems) items, err := data_manage.GetChartInfoAll() if err != nil { return } for _, v := range items { childrenArr := make([]*data_manage.ChartClassifyItems, 0) v.Children = childrenArr if items, ok := cMap[v.ChartClassifyId]; ok { items = append(items, v) cMap[v.ChartClassifyId] = items } else { infoList := make([]*data_manage.ChartClassifyItems, 0) infoList = append(infoList, v) cMap[v.ChartClassifyId] = infoList } } result = cMap return } func ChartClassifyItemsMakeTree(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) { childs, _ := chartClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回 if len(childs) > 0 { node.Children = append(node.Children, childs[0:]...) //添加子节点 for _, v := range childs { //查询子节点的子节点,并添加到子节点 _, has := chartClassifyHaveChild(allNode, v) if has { ChartClassifyItemsMakeTree(allNode, v) //递归添加节点 } else { childrenArr := make([]*data_manage.ChartClassifyItems, 0) v.Children = childrenArr } } } else { childrenArr := make([]*data_manage.ChartClassifyItems, 0) node.Children = childrenArr } }