123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package act
- import (
- "context"
- "net/url"
- "strconv"
- actmdl "go-common/app/interface/main/activity/model/like"
- actrpc "go-common/app/interface/main/activity/rpc/client"
- "go-common/app/interface/main/app-view/conf"
- "go-common/library/ecode"
- httpx "go-common/library/net/http/blademaster"
- "github.com/pkg/errors"
- )
- const (
- _actInfo = "/matsuri/api/get/videoviewinfo"
- _lotteryTimes = "/matsuri/api/get/act/mylotterytimes"
- )
- // Dao is elec dao.
- type Dao struct {
- client *httpx.Client
- actInfo string
- lotteryTimes string
- actRPC *actrpc.Service
- }
- // New elec dao
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- client: httpx.NewClient(c.HTTPClient),
- actInfo: c.Host.Activity + _actInfo,
- lotteryTimes: c.Host.Activity + _lotteryTimes,
- actRPC: actrpc.New(c.ActivityRPC),
- }
- return
- }
- var _emptyList = []string{}
- // Info mid+aid total elec info
- func (d *Dao) Info(c context.Context, actID int64, randomCnt int64) (gifts, winners []string, err error) {
- var res struct {
- Code int `json:"code"`
- Data struct {
- Gifts []struct {
- Img string `json:"sponsors_logo"`
- } `json:"gifts"`
- Winner []struct {
- Gift string `json:"gift"`
- UName string `json:"uname"`
- } `json:"winner"`
- } `json:"data"`
- }
- params := url.Values{}
- params.Set("act_id", strconv.FormatInt(actID, 10))
- params.Set("random_count", strconv.FormatInt(randomCnt, 10))
- if err = d.client.Get(c, d.actInfo, "", params, &res); err != nil {
- err = errors.Wrapf(err, "d.client.Get(%s)", d.actInfo+"?"+params.Encode())
- return _emptyList, _emptyList, err
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrapf(ecode.Int(res.Code), "d.client.Get(%s)", d.actInfo+"?"+params.Encode())
- return _emptyList, _emptyList, err
- }
- for _, v := range res.Data.Gifts {
- gifts = append(gifts, v.Img)
- }
- for _, v := range res.Data.Winner {
- winners = append(winners, v.UName+" 抽到了 "+v.Gift)
- }
- if gifts == nil {
- gifts = _emptyList
- }
- if winners == nil {
- winners = _emptyList
- }
- return
- }
- // LeftLotteryTimes 剩余抽奖次数
- func (d *Dao) LeftLotteryTimes(c context.Context, actID, mid int64) (times int64, err error) {
- var res struct {
- Code int `json:"code"`
- Data struct {
- Times int64 `json:"times"`
- } `json:"data"`
- }
- params := url.Values{}
- params.Set("act_id", strconv.FormatInt(actID, 10))
- params.Set("mid", strconv.FormatInt(mid, 10))
- if err = d.client.Get(c, d.lotteryTimes, "", params, &res); err != nil {
- err = errors.Wrapf(err, "d.client.Get(%s)", d.lotteryTimes+"?"+params.Encode())
- return
- }
- if res.Code != ecode.OK.Code() {
- err = errors.Wrapf(ecode.Int(res.Code), "d.client.Get(%s)", d.lotteryTimes+"?"+params.Encode())
- return
- }
- times = res.Data.Times
- return
- }
- // ActProtocol get act subject & protocol
- func (d *Dao) ActProtocol(c context.Context, messionID int64) (protocol *actmdl.SubProtocol, err error) {
- arg := &actmdl.ArgActProtocol{Sid: messionID}
- protocol, err = d.actRPC.ActProtocol(c, arg)
- return
- }
|