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

86 lines
2.4 KiB
Go

package mission
import (
"context"
"net/url"
"strconv"
"time"
"go-common/app/interface/main/videoup/model/mission"
"go-common/library/ecode"
"go-common/library/log"
)
const (
_msAllURL = "/activity/list/videoall"
_actOnlineByTypeURI = "/activity/online/by/type"
)
// Missions get missions.
func (d *Dao) Missions(c context.Context) (mm map[int]*mission.Mission, err error) {
var res struct {
Code int `json:"code"`
Data []*struct {
ID int `json:"id"`
Name string `json:"name"`
ETime string `json:"etime"`
Tags string `json:"tags"`
} `json:"data"`
}
if err = d.httpR.Get(c, d.missAllURL, "", nil, &res); err != nil {
log.Error("videoup mission list error(%v) | missAllURL(%s)", err, d.missAllURL)
return
}
if res.Code != 0 {
log.Error("videoup mission list res.Code nq zero error(%v) | missAllURL(%s) res(%v)", res.Code, d.missAllURL, res)
err = ecode.CreativeActivityErr
return
}
mm = make(map[int]*mission.Mission, len(res.Data))
for _, m := range res.Data {
miss := &mission.Mission{}
miss.ID = m.ID
miss.Name = m.Name
miss.ETime, _ = time.Parse("2006-01-02 15:04:05", m.ETime)
miss.Tags = m.Tags
mm[miss.ID] = miss
}
return
}
// MissionOnlineByTid fn, 这里默认会返回所有无投稿分区限制要求的通用活动,在做校验的时候允许此类活动投稿到任意分区
func (d *Dao) MissionOnlineByTid(c context.Context, tid int16) (mm map[int]*mission.Mission, err error) {
var res struct {
Code int `json:"code"`
Data []*struct {
ID int `json:"id"`
Name string `json:"name"`
ETime string `json:"etime"`
Tags string `json:"tags"`
} `json:"data"`
}
mm = make(map[int]*mission.Mission)
params := url.Values{}
params.Set("type", strconv.Itoa(int(tid)))
params.Set("plat", "1")
if err = d.httpR.Get(c, d.actOnlineByTypeURL, "", params, &res); err != nil {
log.Error("videoup actOnlineByTypeURL error(%v) | actOnlineByTypeURL(%s)", err, d.actOnlineByTypeURL+"?"+params.Encode())
err = ecode.CreativeActivityErr
return
}
if res.Code != 0 {
log.Error("videoup actOnlineByTypeURL res.Code nq zero error(%v) | actOnlineByTypeURL(%s) res(%v)", res.Code, d.actOnlineByTypeURL+"?"+params.Encode(), res)
err = ecode.CreativeActivityErr
return
}
for _, m := range res.Data {
miss := &mission.Mission{}
miss.ID = m.ID
miss.Name = m.Name
miss.ETime, _ = time.Parse("2006-01-02 15:04:05", m.ETime)
miss.Tags = m.Tags
mm[miss.ID] = miss
}
return
}