90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
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
|
|
}
|