game_sync/model/gamedetailedlog.go

233 lines
6.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"errors"
"time"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
)
var (
GameDetailedLogDBName = "log"
GameDetailedLogCollName = "log_gamedetailed"
)
// 水池上下文
type CoinPoolCtx struct {
LowerLimit int64 //水池下限
UpperLimit int64 //水池上限
CurrValue int32 //当前水位
CurrMode int32 //当前水位模式
Controlled bool //被水池控制了
}
type GameDetailedLogRet struct {
Gplt GameDetailedLogType
}
type GameDetailedLogType struct {
PageNo int //当前页码
PageSize int //每页数量
PageSum int //总页码
Data []*GameDetailedLog //当页数据
}
type GameDetailedLog struct {
Id bson.ObjectId `bson:"_id"` //记录ID
LogId string //记录ID每局游戏唯一
GameId int32 //游戏id
ClubId int32 //俱乐部Id
ClubRoom string //俱乐部包间
Platform string //平台id
Channel string //渠道
Promoter string //推广员
MatchId int64 //比赛ID应该用字符串的
SceneId int32 //房间id会重复
GameMode int32 //游戏类型
GameFreeid int32 //游戏类型房间号
PlayerCount int32 //玩家数量
GameTiming int32 //本局游戏用时(mm)
GameBaseBet int32 //游戏单位低分
GameDetailedNote string //游戏详情
GameDetailVer int32 //游戏详情版本
CpCtx CoinPoolCtx //水池上下文信息
Time time.Time //记录时间
Trend20Lately string //最近游戏走势
Ts int64 //时间戳
CtrlType int // 1控赢 2控输 0不控
PlayerPool map[int]int // 个人水池分
CycleId string // 本轮id打一轮有多局
}
func NewGameDetailedLog() *GameDetailedLog {
log := &GameDetailedLog{Id: bson.NewObjectId()}
return log
}
func NewGameDetailedLogEx(logid string, gameid, sceneid, gamemode, gamefreeid, playercount, gametiming, gamebasebet int32,
gamedetailednote string, platform string, clubId int32, clubRoom string, cpCtx CoinPoolCtx, ver int32,
trend20Lately string, ctrlType int, playerPool map[int]int, cycleId string) *GameDetailedLog {
cl := NewGameDetailedLog()
cl.LogId = logid
cl.GameId = gameid
cl.ClubId = clubId
cl.ClubRoom = clubRoom
cl.SceneId = sceneid
cl.GameMode = gamemode
cl.GameFreeid = gamefreeid
cl.PlayerCount = playercount
cl.GameTiming = gametiming
cl.GameBaseBet = gamebasebet
cl.GameDetailedNote = gamedetailednote
cl.Platform = platform
tNow := time.Now()
cl.Time = tNow
cl.CpCtx = cpCtx
cl.GameDetailVer = ver
cl.Trend20Lately = trend20Lately
cl.Ts = time.Now().Unix()
cl.CtrlType = ctrlType
cl.PlayerPool = playerPool
cl.CycleId = cycleId
return cl
}
func InsertGameDetailedLog(log *GameDetailedLog) (err error) {
if rpcCli == nil {
logger.Logger.Error("model.InsertGameDetailedLog rpcCli == nil")
return
}
var ret bool
err = rpcCli.CallWithTimeout("GameDetailedSvc.InsertGameDetailedLog", log, &ret, time.Second*30)
if err != nil {
logger.Logger.Warn("model.InsertGameDetailedLog error:", err)
return
}
return
}
type RemoveGameDetailedLogArg struct {
Plt string
Ts time.Time
}
func RemoveGameDetailedLog(plt string, ts time.Time) (*mgo.ChangeInfo, error) {
if rpcCli == nil {
logger.Logger.Error("model.RemoveGameDetailedLog rpcCli == nil")
return nil, errors.New("rpcCli is nil")
}
args := &RemoveGameDetailedLogArg{
Plt: plt,
Ts: ts,
}
var ret mgo.ChangeInfo
err := rpcCli.CallWithTimeout("GameDetailedSvc.RemoveGameDetailedLog", args, &ret, time.Second*30)
if err != nil {
logger.Logger.Warn("model.RemoveGameDetailedLog error:", err)
return nil, err
}
return &ret, nil
}
type GameDetailedArg struct {
Plt string
StartTime, EndTime int64
}
func GetAllGameDetailedLogsByTs(plt string, startTime, endTime int64) (data []GameDetailedLog) {
if rpcCli == nil {
logger.Logger.Error("model.GetAllGameDetailedLogsByTs rpcCli == nil")
return nil
}
args := &GameDetailedArg{
Plt: plt,
StartTime: startTime,
EndTime: endTime,
}
err := rpcCli.CallWithTimeout("GameDetailedSvc.GetAllGameDetailedLogsByTs", args, &data, time.Second*30)
if err != nil {
logger.Logger.Error("model.GetAllGameDetailedLogsByTs is error", err)
return nil
}
return
}
type GetPlayerHistoryArg struct {
Plt string
LogId string
}
func GetPlayerHistory(plt, logid string) *GameDetailedLog {
if rpcCli == nil {
logger.Logger.Error("model.GetPlayerHistory rpcCli == nil")
return nil
}
args := &GetPlayerHistoryArg{
Plt: plt,
LogId: logid,
}
var ret GameDetailedLog
err := rpcCli.CallWithTimeout("GameDetailedSvc.GetPlayerHistory", args, &ret, time.Second*30)
if err != nil {
logger.Logger.Error("model.GetPlayerHistory is error", err)
return nil
}
return &ret
}
type GameDetailedGameIdAndArg struct {
Plt string
Gameid int
LimitNum int
}
func GetAllGameDetailedLogsByGameIdAndTs(plt string, gameid int, limitnum int) (data []GameDetailedLog) {
if rpcCli == nil {
logger.Logger.Error("model.GetAllGameDetailedLogsByGameIdAndTs rpcCli == nil")
return nil
}
args := &GameDetailedGameIdAndArg{
Plt: plt,
Gameid: gameid,
LimitNum: limitnum,
}
err := rpcCli.CallWithTimeout("GameDetailedSvc.GetAllGameDetailedLogsByGameIdAndTs", args, &data, time.Second*30)
if err != nil {
logger.Logger.Error("model.GetAllGameDetailedLogsByGameIdAndTs is error", err)
return nil
}
return
}
type GetPlayerHistoryAPIArg struct {
//SnId int32
Platform string
StartTime, EndTime int64
PageNo, PageSize int
}
func GetPlayerHistoryAPI(snId int32, platform string, startTime, endTime int64, pageno, pagesize int) (gdt GameDetailedLogType) {
if rpcCli == nil {
logger.Logger.Error("model.GetPlayerHistoryAPI rpcCli == nil")
return
}
args := &GetPlayerHistoryAPIArg{
//SnId: snId,
Platform: platform,
StartTime: startTime,
EndTime: endTime,
PageNo: pageno,
PageSize: pagesize,
}
ret := &GameDetailedLogRet{}
err := rpcCli.CallWithTimeout("GameDetailedSvc.GetPlayerHistoryAPI", args, ret, time.Second*30)
if err != nil {
logger.Logger.Error("model.GetPlayerHistoryAPI is error", err)
return
}
return ret.Gplt
}