package data import ( "fmt" "hongze/hongze_chart_lib/models" "hongze/hongze_chart_lib/models/data_manage" ) func EdbClassifyListMakeTree(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) { childs, _ := edbClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回 allEdbInfo, _ := GetEdbClassifyEdbInfo() if len(childs) > 0 { node.Children = append(node.Children, childs[0:]...) //添加子节点 for _, v := range childs { //查询子节点的子节点,并添加到子节点 _, has := edbClassifyHaveChild(allNode, v) if has { EdbClassifyListMakeTree(allNode, v) //递归添加节点 } else { edbInfoList := allEdbInfo[v.ClassifyId] v.Children = edbInfoList if v.Children == nil { childrenArr := make([]*data_manage.EdbClassifyItems, 0) v.Children = childrenArr } } } } else { childrenArr := make([]*data_manage.EdbClassifyItems, 0) node.Children = childrenArr } } func edbClassifyHaveChild(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) (childs []*data_manage.EdbClassifyItems, yes bool) { for _, v := range allNode { if v.ParentId == node.ClassifyId { childs = append(childs, v) } } if len(childs) > 0 { yes = true } return } func GetEdbClassifyEdbInfo() (result map[int][]*data_manage.EdbClassifyItems, err error) { cMap := make(map[int][]*data_manage.EdbClassifyItems) items, err := data_manage.GetEdbInfoAll() if err != nil { return } for _, v := range items { childrenArr := make([]*data_manage.EdbClassifyItems, 0) v.Children = childrenArr if items, ok := cMap[v.ClassifyId]; ok { items = append(items, v) cMap[v.ClassifyId] = items } else { infoList := make([]*data_manage.EdbClassifyItems, 0) infoList = append(infoList, v) cMap[v.ClassifyId] = infoList } } result = cMap return } func EdbClassifyItemsMakeTree(allNode []*data_manage.EdbClassifyItems, node *data_manage.EdbClassifyItems) { childs, _ := edbClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回 if len(childs) > 0 { node.Children = append(node.Children, childs[0:]...) //添加子节点 for _, v := range childs { //查询子节点的子节点,并添加到子节点 _, has := edbClassifyHaveChild(allNode, v) if has { EdbClassifyItemsMakeTree(allNode, v) //递归添加节点 } else { childrenArr := make([]*data_manage.EdbClassifyItems, 0) v.Children = childrenArr } } } else { childrenArr := make([]*data_manage.EdbClassifyItems, 0) node.Children = childrenArr } } // GetEdbClassifyListByAdminId 根据账户类型获取分类id集合 func GetEdbClassifyListByAdminId(adminId int64) (classifyIdList []string, err error) { list, err := models.GetEdbdataClassify(adminId) if err != nil { return } for _, parent := range list { if parent.Child != nil { for _, classify := range parent.Child { classifyIdList = append(classifyIdList, fmt.Sprint(classify.ClassifyId)) } } } return } // GetEdbClassifyNameListByAdminId 根据账户类型获取分类名称集合 func GetEdbClassifyNameListByAdminId(adminId int64) (classifyNameList []string, edbDataClassifyMap map[string]*models.EdbdataClassify, err error) { list, err := models.GetEdbdataClassify(adminId) edbDataClassifyMap = make(map[string]*models.EdbdataClassify) if err != nil { return } for _, parent := range list { if parent.Child != nil { for _, classify := range parent.Child { classifyNameList = append(classifyNameList, classify.ClassifyName) edbDataClassifyMap[classify.ClassifyName] = classify } } } return }