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

276 lines
6.8 KiB

package tada
import (
"fmt"
"server/call"
"server/common"
"server/db"
"server/modules/web/app"
"server/modules/web/providers/base"
"server/util"
"strconv"
"strings"
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log"
)
func Tada(e *gin.RouterGroup) {
e.POST("/auth", auth)
e.POST("/bet", bet)
e.POST("/sessionBet", sessionBet)
e.POST("/cancelSessionBet", cancelSessionBet)
}
func auth(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.ResponseB()
}()
resp := new(AuthResp)
req := new(AuthReq)
if !a.SB(req) {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
log.Debug("tada auth req:%+v", req)
a.RetData = resp
// 验证token
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(req.Token))
if uid == 0 {
resp.ErrorCode = ErrorCodeTokenExpired
return
}
currency, err := db.Redis().GetInt(common.GetRedisKeyGameCurrency(uid))
if err != nil {
log.Error("err:%v", err)
resp.ErrorCode = ErrorCodeOther
return
}
resp.UserName = fmt.Sprintf("%v", uid)
resp.Currency = strings.ToUpper(common.CurrencyType(currency).GetCurrencyName())
resp.Balance = call.GetUserCurrencyFloat(uid, common.CurrencyType(currency), 4)
resp.Token = req.Token
log.Debug("tada auth resp:%+v", resp)
}
func bet(c *gin.Context) {
a := app.NewApp(c)
resp := new(BetResp)
defer func() {
log.Debug("tada bet resp:%+v", *resp)
a.ResponseB()
}()
req := new(BetReq)
if !a.SB(req) {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
log.Debug("tada bet req:%+v", req)
a.RetData = resp
ct := common.GetCurrencyID(req.Currency)
if !ct.IsValid() {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
provider := call.GetConfigGameProvider(common.ProviderTada)
if provider == nil {
resp.ErrorCode = ErrorCodeOther
return
}
// defer func() {
// // 更新游戏次数
// if resp.ErrorCode == ErrorCodeSuccess {
// call.UpdateGameSort(provider.ProviderID, req.Game)
// }
// }()
// 验证token
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(req.Token))
if uid == 0 {
var err error
uid, err = strconv.Atoi(req.UserId)
if err != nil || uid == 0 {
log.Error("err:%v", err)
resp.ErrorCode = ErrorCodeTokenExpired
return
}
}
betResp := base.Bet(&base.BetReq{
UID: uid,
CurrencyType: ct,
SettleAmount: int64(req.WinLoseAmount * common.DecimalDigits),
BetAmount: int64(req.BetAmount * common.DecimalDigits),
// TurnOver: int64(req.TurnOver * common.DecimalDigits),
// Preserve: int64(req.Preserve * common.DecimalDigits),
// SessionType: req.Type,
GameID: req.Game,
Provider: provider,
BetID: fmt.Sprintf("%d", req.Round),
// SessionID: fmt.Sprintf("%d", req.SessionID),
Time: req.WagersTime,
})
if betResp.Code == base.CodeInnerError {
resp.ErrorCode = ErrorCodeOther
return
}
if betResp.Code == base.CodeNotEnoughAmount {
resp.ErrorCode = ErrorCodeNotEnoughBalance
return
}
if betResp.Code == base.CodeAccepted {
resp.TxID = betResp.MyUUID
resp.ErrorCode = ErrorCodeAccepted
return
}
resp.UserName = fmt.Sprintf("%v", uid)
resp.Currency = req.Currency
resp.Balance = util.Decimal(float64(betResp.Balance)/common.DecimalDigits, 4)
resp.TxID = betResp.MyUUID
resp.Token = req.Token
}
func sessionBet(c *gin.Context) {
a := app.NewApp(c)
resp := new(BetResp)
defer func() {
log.Debug("tada sessionBet resp:%+v", *resp)
a.ResponseB()
}()
req := new(SessionBetReq)
if !a.SB(req) {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
log.Debug("tada sessionBet req:%+v", req)
a.RetData = resp
ct := common.GetCurrencyID(req.Currency)
if !ct.IsValid() {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
provider := call.GetConfigGameProvider(common.ProviderTada)
if provider == nil {
resp.ErrorCode = ErrorCodeOther
return
}
// 验证token
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(req.Token))
if uid == 0 {
var err error
uid, err = strconv.Atoi(req.UserId)
if err != nil || uid == 0 {
log.Error("err:%v", err)
resp.ErrorCode = ErrorCodeTokenExpired
return
}
}
betResp := base.SessionBet(&base.BetReq{
UID: uid,
CurrencyType: ct,
SettleAmount: int64(req.WinLoseAmount * common.DecimalDigits),
BetAmount: int64(req.BetAmount * common.DecimalDigits),
TurnOver: int64(req.TurnOver * common.DecimalDigits),
Preserve: int64(req.Preserve * common.DecimalDigits),
SessionType: req.Type,
GameID: req.Game,
Provider: provider,
BetID: fmt.Sprintf("%d", req.Round),
SessionID: fmt.Sprintf("%d", req.SessionID),
Time: req.WagersTime,
})
if betResp.Code == base.CodeInnerError {
resp.ErrorCode = ErrorCodeOther
return
}
if betResp.Code == base.CodeNotEnoughAmount {
resp.ErrorCode = ErrorCodeNotEnoughBalance
return
}
if betResp.Code == base.CodeAccepted {
resp.TxID = betResp.MyUUID
resp.ErrorCode = ErrorCodeAccepted
return
}
// defer func() {
// // 更新游戏次数
// if resp.ErrorCode == ErrorCodeSuccess {
// call.UpdateGameSort(provider.ProviderID, req.Game)
// }
// }()
resp.UserName = fmt.Sprintf("%v", uid)
resp.Currency = req.Currency
resp.Balance = util.Decimal(float64(betResp.Balance)/common.DecimalDigits, 4)
resp.TxID = betResp.MyUUID
resp.Token = req.Token
}
func cancelSessionBet(c *gin.Context) {
a := app.NewApp(c)
resp := new(BetResp)
defer func() {
log.Debug("tada cancelSessionBet resp:%+v", *resp)
a.ResponseB()
}()
req := new(SessionBetReq)
if !a.SB(req) {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
log.Debug("tada sessionBet req:%+v", req)
a.RetData = resp
ct := common.GetCurrencyID(req.Currency)
if !ct.IsValid() {
resp.ErrorCode = ErrorCodeInvalidParameter
return
}
provider := call.GetConfigGameProvider(common.ProviderTada)
if provider == nil {
resp.ErrorCode = ErrorCodeOther
return
}
// 验证token
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(req.Token))
if uid == 0 {
var err error
uid, err = strconv.Atoi(req.UserId)
if err != nil || uid == 0 {
log.Error("err:%v", err)
resp.ErrorCode = ErrorCodeTokenExpired
return
}
}
betResp := base.CancelSessionBet(&base.BetReq{
UID: uid,
CurrencyType: ct,
BetAmount: int64(req.BetAmount * common.DecimalDigits),
Preserve: int64(req.Preserve * common.DecimalDigits),
BetID: fmt.Sprintf("%d", req.Round),
SessionID: fmt.Sprintf("%d", req.SessionID),
GameID: req.Game,
Provider: provider,
Time: req.WagersTime,
SessionType: req.Type,
})
if betResp.Code == base.CodeInnerError {
resp.ErrorCode = ErrorCodeOther
return
}
if betResp.Code == base.CodeAccepted {
resp.TxID = betResp.MyUUID
resp.ErrorCode = ErrorCodeAccepted
return
}
resp.UserName = fmt.Sprintf("%v", uid)
resp.Currency = req.Currency
resp.Balance = util.Decimal(float64(betResp.Balance)/common.DecimalDigits, 4)
resp.TxID = betResp.MyUUID
resp.Token = req.Token
}