game_sync/gamesrv/slotspkg/internal/module/player/bet.go

106 lines
2.2 KiB
Go

package player
import (
"fmt"
"github.com/tomas-qstarrs/boost/cast"
"mongo.games.com/game/gamesrv/slotspkg/internal/dao/thinkingdata"
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/global"
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
"mongo.games.com/game/gamesrv/slotspkg/internal/module/shared"
"strings"
)
func (b *Bet) Clear() {
game := ParseGameID(b.GameID.Get())
if game == nil {
return
}
coinChange := &thinkingdata.CoinChangeBet{}
coinChange.Reason = game.Contest
coinChange.Type = key.CoinChangeBet
coinChange.BeforeCoin = b.Coin.Get()
coinChange.DecCoin = b.Coin.Get()
defer func() {
coinChange.AfterCoin = b.Coin.Get()
//thinkingdata.Track(Context(nil, game), coinChange)
}()
b.ProcessID.Set("")
b.GameID.Set("")
b.Coin.Set(0)
}
func (b *Bet) Bet(game *shared.Game, betCoin DecCoin) {
gameID := GetGameID(game)
if b.GameID.Get() == gameID {
coinChange := &thinkingdata.CoinChangeBet{}
coinChange.Reason = game.Contest
coinChange.Type = key.CoinChangeBet
coinChange.BeforeCoin = b.Coin.Get()
coinChange.IncCoin = betCoin.Coin
defer func() {
coinChange.AfterCoin = b.Coin.Get()
//thinkingdata.Track(Context(nil, game), coinChange)
}()
b.ProcessID.Set(global.ProcessID)
} else {
b.Clear()
coinChange := &thinkingdata.CoinChangeBet{}
coinChange.Reason = game.Contest
coinChange.Type = key.CoinChangeBet
coinChange.BeforeCoin = b.Coin.Get()
coinChange.IncCoin = betCoin.Coin
defer func() {
coinChange.AfterCoin = b.Coin.Get()
//thinkingdata.Track(Context(nil, game), coinChange)
}()
b.GameID.Set(gameID)
b.ProcessID.Set(global.ProcessID)
}
}
func GetGameID(game *shared.Game) string {
if game == nil {
return ""
}
return fmt.Sprintf("%v.%v.%v.%v.%v",
game.Contest,
game.ContestType,
game.RoomID,
game.RoomType,
game.RoundID,
)
}
func ParseGameID(gameID string) *shared.Game {
if gameID == "" {
return nil
}
strs := strings.Split(gameID, ".")
if len(strs) != 5 {
return nil
}
game := &shared.Game{
Contest: strs[0],
ContestType: strs[1],
RoomID: cast.ToInt64(strs[2]),
RoomType: strs[3],
RoundID: cast.ToInt64(strs[4]),
}
return game
}