func categoryWalk(buf *bytes.Buffer, cs []*sale.ValueCategory) { var start iterator.WalkFunc = func(v interface{}, level int) { c := v.(*sale.ValueCategory) if c.Id == 0 { return } if level == 1 { buf.WriteString(fmt.Sprintf("<div class=\"cat_panel\"><div class=\"t1 t1_%d\"><span class=\"icon\"></span><a href=\"%s\"><strong>%s</strong></a></div>", c.Id, c.Url, c.Name)) } else if level == 2 { buf.WriteString(fmt.Sprintf("<ul><li><a href=\"%s\"><b>%s</b></a></li>", c.Url, c.Name)) } else if level == 3 || level > 3 { buf.WriteString(fmt.Sprintf("<li><a href=\"%s\">%s</a></li>", c.Url, c.Name)) } } var over iterator.WalkFunc = func(v interface{}, level int) { c := v.(*sale.ValueCategory) if c.Id != 0 { if level == 1 { buf.WriteString("</div>") } else if level == 2 { buf.WriteString("</ul>") } } } util.WalkCategory(cs, &sale.ValueCategory{Id: 0}, start, over) }
func readToCategoryDropList(partnerId int) []byte { categories := dps.SaleService.GetCategories(partnerId) buf := bytes.NewBuffer([]byte{}) var f iterator.WalkFunc = func(v1 interface{}, level int) { c := v1.(*sale.ValueCategory) if c.Id != 0 { buf.WriteString(fmt.Sprintf( `<option class="opt%d" value="%d">%s</option>`, level, c.Id, c.Name, )) } } util.WalkCategory(categories, &sale.ValueCategory{Id: 0}, f, nil) return buf.Bytes() }