package common

import (
	"server/model"
)

// =================Spider数据处理=======================

// CategoryTree 组装树形菜单
func CategoryTree(list []model.ClassInfo) *model.CategoryTree {
	// 遍历所有分类进行树形结构组装
	tree := &model.CategoryTree{Category: &model.Category{Id: 0, Pid: -1, Name: "分类信息"}}
	temp := make(map[int64]*model.CategoryTree)
	temp[tree.Id] = tree

	for _, c := range list {
		// 判断当前节点ID是否存在于 temp中
		category, ok := temp[c.Id]
		if ok {
			// 将当前节点信息保存
			category.Category = &model.Category{Id: c.Id, Pid: c.Pid, Name: c.Name}
		} else {
			// 如果不存在则将当前分类存放到 temp中
			category = &model.CategoryTree{Category: &model.Category{Id: c.Id, Pid: c.Pid, Name: c.Name}}
			temp[c.Id] = category
		}
		// 根据 pid获取父节点信息
		parent, ok := temp[category.Pid]
		if !ok {
			// 如果不存在父节点存在, 则将父节点存放到temp中
			temp[c.Pid] = parent
		}
		// 将当前节点存放到父节点的Children中
		parent.Children = append(parent.Children, category)
	}

	return tree
}
