印度包网
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.
 
 
 

145 lines
3.3 KiB

package pg3
import (
"fmt"
"server/common"
"server/db"
"server/util"
"strconv"
"time"
)
const (
ErrCodeSuccess = 0
ErrCodePlayerNotFound = 2000 // 玩家不存在
ErrCodePlayerToken = 2001 // Token错误
ErrCodeInvalidGameID = 102 // 无效的GameDI
ErrCodeInternalError = 3000 // 内部错误
ErrCodeInsufficientBal = 2010 // 投注失败,如余额不足
)
type GameListResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data GameListData `json:"data"`
}
type GameListData struct {
GameList []GameListItem `json:"glist"`
}
type GameListItem struct {
Icon string `json:"icon"`
MapID string `json:"mapid"`
Name string `json:"name"`
Site string `json:"site"`
GameID string `json:"gameid"`
}
// EnterGameRequest 进入游戏
type EnterGameRequest struct {
Uname string `json:"uname"`
GameID string `json:"gameid"`
Token string `json:"token,omitempty"`
Lang string `json:"lang,omitempty"`
Nick string `json:"nick,omitempty"`
RtpPool int `json:"rtp_pool,omitempty"`
}
type EnterGameResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
GameURL string `json:"gameurl"`
} `json:"data"`
}
// PlaceBetRequest 下注
type PlaceBetRequest struct {
Uname string `json:"uname"`
Token string `json:"token"`
BetID string `json:"betid"`
SessionID string `json:"sessionid"`
GameID string `json:"gameid"`
Bet float64 `json:"bet"`
Award float64 `json:"award"`
IsEndRound bool `json:"is_end_round"`
Ctime int64 `json:"ctime"`
}
type PlaceBetResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
Uname string `json:"uname"`
BetID string `json:"betid"`
Balance float64 `json:"balance"`
} `json:"data"`
}
type VerifySessionReq struct {
Uname string `json:"uname"`
Token string `json:"token"`
}
type VerifySessionResp struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
Uname string `json:"uname"`
Balance float64 `json:"balance"`
} `json:"data"`
}
type GetBalanceRequest struct {
GameId string `json:"gameid"`
Uname string `json:"uname"`
}
type GetBalanceResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
Uname string `json:"uname"`
Balance float64 `json:"balance"`
} `json:"data"`
}
func GetGameList() {
API = APITest
AgentMap = AgentMapTest
url := fmt.Sprintf("%s/api/game/loadlist", APITest)
mchid := AgentMap.MchId
key := AgentMap.Key
timestamp := time.Now().Unix()
headers := map[string]string{
"X-Game-Mchid": mchid,
"X-Game-Timestamp": strconv.FormatInt(timestamp, 10),
"Content-Type": "application/json;charset=UTF-8",
}
type empty struct{}
var e empty
// Generate sign
emptyBody := "{}"
sign := GenerateSign(emptyBody, timestamp, key)
headers["X-Game-Sign"] = sign
var response GameListResponse
err := util.HttpPost(url, e, &response, headers)
if err != nil {
return
}
var gameList []*common.ConfigGameList
for _, item := range response.Data.GameList {
id, _ := strconv.Atoi(item.MapID)
gameList = append(gameList, &common.ConfigGameList{
GameProvider: common.ProviderPG2,
GameID: id,
GameCode: item.GameID,
Icon: item.Icon,
Name: item.Name,
})
}
db.Mysql().Create(gameList)
}