226 lines
6.0 KiB
Go
226 lines
6.0 KiB
Go
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 //时间戳
|
|
}
|
|
|
|
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) *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()
|
|
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
|
|
}
|