go-common/app/interface/main/dm2/dao/bigdata.go
2019-04-22 18:49:16 +08:00

54 lines
1.4 KiB
Go

package dao
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"go-common/library/log"
"go-common/library/net/metadata"
)
const (
_uri = "/danmaku/%d/rec"
)
func (d *Dao) danmakuURI(oid int64) string {
return d.conf.Host.AI + fmt.Sprintf(_uri, oid%4)
}
// RecFlag get recommend flags from bigdata.
func (d *Dao) RecFlag(c context.Context, mid, aid, oid, limit, ps, pe int64, plat int32) (data []byte, err error) {
var res struct {
Code int64 `json:"code"`
Msg string `json:"message"`
Data json.RawMessage `json:"data"`
}
uri := d.danmakuURI(oid)
params := url.Values{}
realIP := metadata.String(c, metadata.RemoteIP)
params.Set("mid", strconv.FormatInt(mid, 10))
params.Set("aid", strconv.FormatInt(aid, 10))
params.Set("oid", strconv.FormatInt(oid, 10))
params.Set("limit", strconv.FormatInt(limit, 10))
params.Set("ps", strconv.FormatInt(ps, 10))
params.Set("pe", strconv.FormatInt(pe, 10))
params.Set("plat", strconv.FormatInt(int64(plat), 10))
params.Set("ip", realIP)
if err = d.httpCli.Get(c, uri, realIP, params, &res); err != nil {
PromError(uri)
log.Error("d.httpCli.Get(%s?%s) error(%v)", uri, params.Encode(), err)
return
}
if res.Code != 0 {
PromError(uri)
log.Error("d.httpCli.Get(%s?%s) code:%d msg:%s", uri, params.Encode(), res.Code, res.Msg)
err = fmt.Errorf("bigdata response code(%d) error", res.Code)
return
}
data = res.Data
return
}