56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"github.com/pkg/errors"
|
|
"go-common/app/interface/live/app-room/model"
|
|
"go-common/library/ecode"
|
|
"net/http"
|
|
"net/url"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
//LiveWallet 获取用户直播钱包数据
|
|
func (d *Dao) LiveWallet(c context.Context, mid int64, platform string) (wallet *model.LiveWallet, err error) {
|
|
params := url.Values{}
|
|
params.Set("uid", strconv.FormatInt(mid, 10))
|
|
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
|
|
params.Set("appkey", d.c.HTTPClient.LiveRpc.Key)
|
|
tmp := params.Encode() + d.c.HTTPClient.LiveRpc.Secret
|
|
mh := md5.Sum([]byte(tmp))
|
|
sign := hex.EncodeToString(mh[:])
|
|
params.Set("sign", sign)
|
|
req, _ := http.NewRequest("GET", d.liveWalletURL+"?"+params.Encode(), nil)
|
|
req.Header.Set("Content-Type", "application/json")
|
|
req.Header.Set("platform", platform)
|
|
var wr struct {
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
Data struct {
|
|
Gold string `json:"gold"`
|
|
Silver string `json:"silver"`
|
|
GoldRechargeCnt string `json:"gold_recharge_cnt"`
|
|
GoldPayCnt string `json:"gold_pay_cnt"`
|
|
SilverPayCnt string `json:"silver_pay_cnt"`
|
|
} `json:"data"`
|
|
}
|
|
if err = d.liveWalletClient.Do(c, req, &wr); err != nil {
|
|
return
|
|
}
|
|
if wr.Code != 0 {
|
|
err = errors.Wrap(ecode.Int(wr.Code), d.liveWalletURL+"?"+params.Encode())
|
|
return
|
|
}
|
|
wallet = &model.LiveWallet{}
|
|
wallet.Gold, _ = strconv.ParseInt(wr.Data.Gold, 10, 64)
|
|
wallet.Silver, _ = strconv.ParseInt(wr.Data.Silver, 10, 64)
|
|
wallet.GoldRechargeCnt, _ = strconv.ParseInt(wr.Data.GoldRechargeCnt, 10, 64)
|
|
wallet.GoldPayCnt, _ = strconv.ParseInt(wr.Data.GoldPayCnt, 10, 64)
|
|
wallet.SilverPayCnt, _ = strconv.ParseInt(wr.Data.SilverPayCnt, 10, 64)
|
|
|
|
return
|
|
}
|