package base import ( "encoding/json" "fmt" "time" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/task" ) const ( Warning_LoseCoinLimit = 1 //1. 单次输分超过设定值,默认值100000分 Warning_CoinPoolZero = 2 //2. 水位线低于0 Warning_CoinPoolLow = 3 //3. 水位线低于水位下限 Warning_BlackPlayer = 4 //4. 黑名单玩家加入游戏 Warning_BetCoinMax = 5 //5. 单个玩家下注超过5000元,可配置,默认值5000 Warning_WinRate = 6 //6. 实时赔率 = 玩家产出+1/玩家投入+1 ≥ 5 的玩家加入游戏,可配置,默认值5 Warning_WinCoin = 7 //7. 玩家获利 = 玩家产出 - 玩家投入 ≥ 5000元 加入游戏,可配置,默认值5000 ) type GameWarningParam struct { WarningType int WarningGame int WarningScene int WarningSnid int WarningBet int WarningCoin int WarningRate int WinCoin int64 LoseCoin int64 } var EmailTitle = "Game server warning!" func NewGameWarning(param string) { timeNow := time.Now() task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { gwParam := GameWarningParam{} err := json.Unmarshal([]byte(param), &gwParam) if err != nil { logger.Logger.Error("Unmarshal game warning param error:", err) return err } var emailContent string switch gwParam.WarningType { case Warning_LoseCoinLimit: case Warning_CoinPoolZero: emailContent = fmt.Sprintf("Game %v coin pool drop to zero level.", gwParam.WarningGame) case Warning_CoinPoolLow: emailContent = fmt.Sprintf("Game %v coin pool drop to low level.", gwParam.WarningGame) case Warning_BlackPlayer: emailContent = fmt.Sprintf("Player %v where in black list enter %v game.", gwParam.WarningSnid, gwParam.WarningGame) case Warning_BetCoinMax: emailContent = fmt.Sprintf("Player %v where in %v scene,bet big coin in %v game.", gwParam.WarningSnid, gwParam.WarningScene, gwParam.WarningGame) case Warning_WinRate: case Warning_WinCoin: default: return nil } emailContent = emailContent + "\n" + fmt.Sprintf("Time:%v", timeNow) println(EmailTitle, emailContent) //TODO send email //email.InitGmailFrom() return nil }), nil, "NewGameWarning").Start() } func WarningCoinPool(warnType int, gameFreeId int32) { NewGameWarning(fmt.Sprintf(`{"WarningType":%v,"WarningGame":%v}`, warnType, gameFreeId)) } func WarningBlackPlayer(snid, gameFreeId int32) { NewGameWarning(fmt.Sprintf(`{"WarningType":%v,"WarningSnid":%v,"WarningGame":%v}`, Warning_BlackPlayer, snid, gameFreeId)) }