You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.7 KiB
55 lines
1.7 KiB
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 |
|
}
|
|
|