package service import ( "shop-api/global" "shop-api/model" ) func GetTbCategoryBreadcrumb(id uint) (error, []model.Breadcrumb) { var ( category model.Breadcrumb result = make([]model.Breadcrumb, 0) ) err := global.MG_DB.Table("tb_category").Select("id,`name`,pid,is_leaf").Where("status = 1 AND id = ?", id).Find(&category).Error if err != nil { return err, nil } if category.Pid != 0 { err = getTbCategoryParent(&category) if err != nil { return err, nil } } transferBreadcrumbList(&category, &result) return nil, result } func getTbCategoryParent(breadcrumb *model.Breadcrumb) (err error) { var tmp model.Breadcrumb err = global.MG_DB.Table("tb_category").Select("id,`name`,pid,is_leaf").Where("status = 1 AND id = ?", breadcrumb.Pid).Find(&tmp).Error if err != nil { return err } breadcrumb.Parent = &tmp if breadcrumb.Parent.Pid != 0 { err = getTbCategoryParent(breadcrumb.Parent) return err } return nil } func transferBreadcrumbList(info *model.Breadcrumb, breadcrumbs *[]model.Breadcrumb) { if info.ID != 0 { *breadcrumbs = append(*breadcrumbs, *info) if info.Parent != nil { transferBreadcrumbList(info.Parent, breadcrumbs) } } }