106 lines
2.2 KiB
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
|
|
}
|