|
|
|
|
package pg2
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"server/call"
|
|
|
|
|
"server/common"
|
|
|
|
|
"server/db"
|
|
|
|
|
"server/modules/web/app"
|
|
|
|
|
"server/modules/web/providers/base"
|
|
|
|
|
"server/util"
|
|
|
|
|
"strconv"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"github.com/liangdas/mqant/log"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func PG(e *gin.RouterGroup) {
|
|
|
|
|
e.POST("/VerifySession", VerifySession)
|
|
|
|
|
e.POST("/Cash/Get", GetPlayerBalance)
|
|
|
|
|
e.POST("/Cash/Bet", PlaceBet)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetGameID(providerID int, gameCode string) int {
|
|
|
|
|
game := call.GetConfigGameListByCode(providerID, gameCode)
|
|
|
|
|
if game != nil {
|
|
|
|
|
return game.GameID
|
|
|
|
|
}
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func VerifySession(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.ResponseB()
|
|
|
|
|
}()
|
|
|
|
|
req := &VerifySessionReq{}
|
|
|
|
|
resp := &VerifySessionResp{}
|
|
|
|
|
a.RetData = resp
|
|
|
|
|
if !a.SB(req) {
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
log.Debug("VerifySession req:%+v", req)
|
|
|
|
|
uid, err := strconv.Atoi(req.Uname)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("err:%v", err)
|
|
|
|
|
resp.Code = ErrCodePlayerNotFound
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
currency, err := db.Redis().GetInt(common.GetRedisKeyGameCurrency(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("err:%v", err)
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resp.Data.Balance = call.GetUserCurrencyFloat(uid, common.CurrencyType(currency), 2)
|
|
|
|
|
|
|
|
|
|
a.Data = resp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetPlayerBalance(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.ResponseB()
|
|
|
|
|
}()
|
|
|
|
|
req := &GetBalanceRequest{}
|
|
|
|
|
resp := &GetBalanceResponse{}
|
|
|
|
|
a.RetData = resp
|
|
|
|
|
if !a.SB(req) {
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
log.Debug("GetPlayerBalance req:%+v", req)
|
|
|
|
|
uid, err := strconv.Atoi(req.Uname)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("err:%v", err)
|
|
|
|
|
resp.Code = ErrCodePlayerNotFound
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
currency, err := db.Redis().GetInt(common.GetRedisKeyGameCurrency(uid))
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("err:%v", err)
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
resp.Data.Uname = req.Uname
|
|
|
|
|
resp.Data.Balance = call.GetUserCurrencyFloat(uid, common.CurrencyType(currency), 2)
|
|
|
|
|
a.Data = resp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func PlaceBet(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.ResponseB()
|
|
|
|
|
}()
|
|
|
|
|
req := &PlaceBetRequest{}
|
|
|
|
|
resp := &PlaceBetResponse{}
|
|
|
|
|
a.RetData = resp
|
|
|
|
|
if !a.SB(req) {
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
log.Debug("PlaceBet:%+v", req)
|
|
|
|
|
// 验证token
|
|
|
|
|
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(req.Token))
|
|
|
|
|
if uid == 0 {
|
|
|
|
|
resp.Code = ErrCodePlayerNotFound
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
provider := call.GetConfigGameProvider(common.ProviderPG2)
|
|
|
|
|
now := time.Now().Unix()
|
|
|
|
|
if req.Bet != 0 || req.Award != 0 {
|
|
|
|
|
betReq := &base.BetReq{
|
|
|
|
|
UID: uid,
|
|
|
|
|
CurrencyType: common.CurrencyINR,
|
|
|
|
|
BetAmount: int64(req.Bet * common.DecimalDigits),
|
|
|
|
|
TurnOver: int64(req.Bet * common.DecimalDigits),
|
|
|
|
|
SettleAmount: int64(req.Award * common.DecimalDigits),
|
|
|
|
|
SessionType: common.SessionTypeSettle,
|
|
|
|
|
GameID: GetGameID(common.ProviderPG2, req.GameID),
|
|
|
|
|
GameName: req.GameID,
|
|
|
|
|
Provider: provider,
|
|
|
|
|
BetID: req.BetID,
|
|
|
|
|
SessionID: req.SessionID,
|
|
|
|
|
Time: now,
|
|
|
|
|
}
|
|
|
|
|
betResp := base.SessionBet(betReq)
|
|
|
|
|
if betResp.Code != base.CodeOk {
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
if betResp.Code == base.CodeAccepted {
|
|
|
|
|
resp.Code = ErrCodeInternalError
|
|
|
|
|
} else if betResp.Code == base.CodeNotEnoughAmount {
|
|
|
|
|
resp.Code = ErrCodeInsufficientBal
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
resp.Data.Balance = util.Decimal(float64(betResp.Balance)/common.DecimalDigits, 2)
|
|
|
|
|
} else {
|
|
|
|
|
resp.Data.Balance = util.Decimal(float64(call.GetUserCurrency(uid, common.CurrencyINR))/common.DecimalDigits, 2)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.Data = resp
|
|
|
|
|
}
|