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 }