type ResultCarSku struct {
Colour string `json:"colour"` // 车辆颜色
ColourChildren []*colourChildren `json:"children"`
}
type colourChildren struct {
Type string `json:"type"` // 车辆类型
TypeChildren []typeChildren `json:"children"`
}
type typeChildren struct {
Specs float64 `json:"specs"` // 车辆规格 (m)
CarryWeight int `json:"carry_weight"` // 核载质量(kg)
Volume float64 `json:"volume"` // 容积(m³)
}
//临时承接数据库传过来的type
type Type struct {
Type string `json:"type"` // 车辆类型
}
func (s *CarSkuService) GetCarSku(_ context.Context, req *dto.CarSkuReq) *app_dto.Resp {
Data, err := s.CarSku.FindCarSku()
if err != nil {
return app_dto.NewResponse(carSku.CARSKU_GET_DATA_ERROR)
}
//初始化
result := make([]ResultCarSku, 0)
//初始化第一层数据
for _, v := range Data {
if len(result) == 0 {
var r ResultCarSku
r.Colour = v.Colour
result = append(result, r)
}
for j, r := range result {
if r.Colour == v.Colour {
break
} else if j == len(result)-1 {
var r ResultCarSku
r.Colour = v.Colour
result = append(result, r)
}
}
}
//遍历获得的数据
for _, v := range Data {
//定义第三层数据
var TypeChildren typeChildren
TypeChildren.Volume = v.Volume
TypeChildren.Specs = v.Specs
TypeChildren.CarryWeight = v.CarryWeight
//匹配车牌颜色
for m, r := range result {
if r.Colour == v.Colour {
//第一次需要新增
if len(r.ColourChildren) == 0 {
c := &colourChildren{}
c.Type = v.Type
result[m].ColourChildren = append(result[m].ColourChildren, c)
}
//匹配类型
for n, c := range r.ColourChildren {
if c.Type == v.Type {
result[m].ColourChildren[n].TypeChildren = append(result[m].ColourChildren[n].TypeChildren, TypeChildren)
break
} else if n == len(result[m].ColourChildren)-1 {
var ColourChildren colourChildren
ColourChildren.Type = v.Type
ColourChildren.TypeChildren = append(ColourChildren.TypeChildren, TypeChildren)
result[m].ColourChildren = append(result[m].ColourChildren, &ColourChildren)
}
}
}
}
}
response := application.OK
response.Data = result
return app_dto.NewResponse(response)
}
Golang返回树状结构数据(3层)
最新推荐文章于 2023-04-10 15:05:30 发布