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 }