1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package dao
- import (
- "context"
- "net/url"
- v1 "go-common/app/service/main/account/api"
- "go-common/library/ecode"
- "go-common/library/net/metadata"
- "go-common/library/xstr"
- "github.com/pkg/errors"
- )
- var (
- _emptyVipInfos3 = map[int64]*v1.VipInfo{}
- )
- // RawVip get mid's vip info from account center by vip API.
- func (d *Dao) RawVip(c context.Context, mid int64) (vip *v1.VipInfo, err error) {
- params := url.Values{}
- var res struct {
- Code int `json:"code"`
- Data struct {
- Type int32 `json:"vipType"`
- Status int32 `json:"vipStatus"`
- DueDate int64 `json:"vipDueDate"`
- VipPayType int32 `json:"isAutoRenew"`
- } `json:"data"`
- }
- err = d.httpR.RESTfulGet(c, d.vipInfoURI, metadata.String(c, metadata.RemoteIP), params, &res, mid)
- if err != nil {
- err = errors.Wrap(err, "dao vip")
- return
- }
- if res.Code != 0 {
- err = ecode.Int(res.Code)
- err = errors.Wrap(err, "dao vip")
- return
- }
- vip = &v1.VipInfo{
- Type: res.Data.Type,
- Status: res.Data.Status,
- DueDate: res.Data.DueDate,
- VipPayType: res.Data.VipPayType,
- }
- return
- }
- // RawVips get multi mid's vip info from account center by vip API.
- func (d *Dao) RawVips(c context.Context, mids []int64) (res map[int64]*v1.VipInfo, err error) {
- params := url.Values{}
- params.Set("idList", xstr.JoinInts(mids))
- var info struct {
- Code int `json:"code"`
- Data map[int64]*struct {
- Type int32 `json:"vipType"`
- Status int32 `json:"vipStatus"`
- DueDate int64 `json:"vipDueDate"`
- } `json:"data"`
- }
- err = d.httpR.Get(c, d.vipMultiInfoURI, "", params, &info)
- if err != nil {
- err = errors.Wrap(err, "dao vip")
- return
- }
- if info.Code != 0 {
- err = ecode.Int(info.Code)
- err = errors.Wrap(err, "dao vip")
- return
- }
- if len(info.Data) == 0 {
- res = _emptyVipInfos3
- return
- }
- res = make(map[int64]*v1.VipInfo, len(info.Data))
- for mid, v := range info.Data {
- if v == nil {
- continue
- }
- vip := &v1.VipInfo{
- Type: v.Type,
- Status: v.Status,
- DueDate: v.DueDate,
- }
- res[mid] = vip
- }
- return
- }
|