123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package creative
- import (
- "context"
- "net/url"
- "strconv"
- "go-common/app/interface/main/app-view/conf"
- "go-common/app/interface/main/app-view/model/creative"
- "go-common/library/ecode"
- httpx "go-common/library/net/http/blademaster"
- "go-common/library/net/metadata"
- "github.com/pkg/errors"
- )
- const (
- _special = "/x/internal/uper/special"
- _follow = "/x/internal/uper/switch"
- _bgm = "/x/internal/creative/archive/bgm"
- _points = "/x/internal/creative/video/viewpoints"
- )
- // Dao is space dao
- type Dao struct {
- client *httpx.Client
- special string
- follow string
- bgm string
- points string
- }
- // New initial space dao
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- client: httpx.NewClient(c.HTTPClient),
- special: c.Host.APICo + _special,
- follow: c.Host.APICo + _follow,
- bgm: c.Host.APICo + _bgm,
- points: c.Host.APICo + _points,
- }
- return
- }
- // FollowSwitch get auto follow switch .
- func (d *Dao) FollowSwitch(c context.Context, vmid int64) (s *creative.FollowSwitch, err error) {
- params := url.Values{}
- params.Set("mid", strconv.FormatInt(vmid, 10))
- params.Set("from", "0")
- var res struct {
- Code int `json:"code"`
- Data *creative.FollowSwitch `json:"data"`
- }
- ip := metadata.String(c, metadata.RemoteIP)
- if err = d.client.Get(c, d.follow, ip, params, &res); err != nil {
- return
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrap(ecode.Int(res.Code), d.follow+"?"+params.Encode())
- return
- }
- s = res.Data
- return
- }
- // Bgm get archive bgm
- func (d *Dao) Bgm(c context.Context, aid, cid int64) (bgm []*creative.Bgm, err error) {
- params := url.Values{}
- params.Set("aid", strconv.FormatInt(aid, 10))
- params.Set("cid", strconv.FormatInt(cid, 10))
- var res struct {
- Code int `json:"code"`
- Data []*creative.Bgm `json:"data"`
- }
- ip := metadata.String(c, metadata.RemoteIP)
- if err = d.client.Get(c, d.bgm, ip, params, &res); err != nil {
- return
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrap(ecode.Int(res.Code), d.bgm+"?"+params.Encode())
- return
- }
- bgm = res.Data
- return
- }
- // Points get video points
- func (d *Dao) Points(c context.Context, aid, cid int64) (points []*creative.Points, err error) {
- params := url.Values{}
- params.Set("aid", strconv.FormatInt(aid, 10))
- params.Set("cid", strconv.FormatInt(cid, 10))
- var res struct {
- Code int `json:"code"`
- Data struct {
- Points []*creative.Points `json:"points"`
- } `json:"data"`
- }
- ip := metadata.String(c, metadata.RemoteIP)
- if err = d.client.Get(c, d.points, ip, params, &res); err != nil {
- return
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrap(ecode.Int(res.Code), d.points+"?"+params.Encode())
- return
- }
- points = res.Data.Points
- return
- }
- // Special is
- func (d *Dao) Special(c context.Context) (midsM map[int64]struct{}, err error) {
- params := url.Values{}
- params.Set("group_id", "20")
- var res struct {
- Code int `json:"code"`
- Data []struct {
- Mid int64 `json:"mid"`
- } `json:"data"`
- }
- if err = d.client.Get(c, d.special, "", params, &res); err != nil {
- return
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrap(ecode.Int(res.Code), d.special+"?"+params.Encode())
- return
- }
- midsM = make(map[int64]struct{})
- for _, l := range res.Data {
- midsM[l.Mid] = struct{}{}
- }
- return
- }
|