package data import ( "hongze/hz_eta_api/models/data_manage" "hongze/hz_eta_api/utils" "strconv" "time" ) 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 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 } } func FixChartClassify() { //新增三级分类 list, err := data_manage.GetChartClassifyByLevel(2,1) if err != nil { return } for _, v := range list { classify := new(data_manage.ChartClassify) classify.ParentId = v.ChartClassifyId classify.ChartClassifyName = v.ChartClassifyName classify.HasData = 0 classify.CreateTime = time.Now() classify.ModifyTime = time.Now() if utils.RunMode == "debug" { classify.SysUserId = 11 } else { classify.SysUserId = 163 } classify.SysUserRealName = "admin" classify.Level = 3 timestamp := strconv.FormatInt(time.Now().UnixNano(), 10) classify.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp) classify.Sort = v.Sort classify.Source = utils.CHART_SOURCE_DEFAULT id, err := data_manage.AddChartClassify(classify) if err != nil { return } err = data_manage.FIXChartClassifyId(int(id),v.ChartClassifyId) if err != nil { return } } }