github.com/bububa/oceanengine/marketing-api@v0.0.0-20210315120513-0b953137f7a6/model/report/liveroom/request.go (about) 1 package liveroom 2 3 import ( 4 "encoding/json" 5 "net/url" 6 "strconv" 7 "time" 8 9 "github.com/bububa/oceanengine/marketing-api/enum" 10 ) 11 12 type Request struct { 13 AdvertiserID uint64 `json:"advertiser_id,omitempty"` 14 StartTime time.Time `json:"start_time,omitempty"` // 报表开始时间,格式为%Y-%m-%d %H:%M:%S,默认从7天前开始 15 EndTime time.Time `json:"end_time,omitempty"` // 报表结束时间,格式为%Y-%m-%d %H:%M:%S,默认为今天,最大时间范围30天 16 Fields []string `json:"fields,omitempty"` // 指标字段,默认传入指标"click_product_count", "live_orders_count", "pay_order_gmv", "pay_order_count", "order_convert_rate" 17 Filtering *Filtering `json:"filtering,omitempty"` // 筛选字段 18 OrderField string `json:"order_field,omitempty"` // 排序指标字段,不传默认填空 19 OrderType enum.OrderType `json:"order_type,omitempty"` // 排序类型;默认值: DESC;允许值: ASC, DESC,不传入order_field时不保证顺序 20 Page int `json:"page,omitempty"` 21 PageSize int `json:"page_size,omitempty"` // 页面大小,默认20,不超过100 22 } 23 24 type Filtering struct { 25 ProductIDs []uint64 `json:"product_ids,omitempty"` // 商品id列表,最多传入100 26 RoomIDs []uint64 `json:"room_ids,omitempty"` // 直播间id列表,最多传入100 27 } 28 29 func (r Request) Encode() string { 30 values := &url.Values{} 31 values.Set("advertiser_id", strconv.FormatUint(r.AdvertiserID, 10)) 32 if !r.StartTime.IsZero() { 33 values.Set("start_time", r.StartTime.Format("2006-01-02 15:04:05")) 34 } 35 if !r.EndTime.IsZero() { 36 values.Set("end_time", r.EndTime.Format("2006-01-02 15:04:05")) 37 } 38 if r.Fields != nil { 39 fields, _ := json.Marshal(r.Fields) 40 values.Set("fields", string(fields)) 41 } 42 if r.Filtering != nil { 43 filtering, _ := json.Marshal(r.Filtering) 44 values.Set("filtering", string(filtering)) 45 } 46 if r.OrderField != "" { 47 values.Set("order_field", r.OrderField) 48 } 49 if r.OrderType != "" { 50 values.Set("order_type", string(r.OrderType)) 51 } 52 if r.Page > 0 { 53 values.Set("page", strconv.Itoa(r.Page)) 54 } 55 if r.PageSize > 0 { 56 values.Set("page_size", strconv.Itoa(r.PageSize)) 57 } 58 return values.Encode() 59 }