308 lines
9.0 KiB
Go
308 lines
9.0 KiB
Go
package model
|
||
|
||
import (
|
||
"errors"
|
||
"time"
|
||
|
||
"github.com/globalsign/mgo/bson"
|
||
"mongo.games.com/goserver/core/logger"
|
||
)
|
||
|
||
var (
|
||
GamePlayerListLogDBName = "log"
|
||
GamePlayerListLogCollName = "log_gameplayerlistlog"
|
||
)
|
||
|
||
type GameTotalRecord struct {
|
||
GameTotal int32 //今日牌局数
|
||
GameTotalCoin int32 //今日游戏流水
|
||
GameWinTotal int32 //今日游戏输赢总额
|
||
}
|
||
|
||
type GamePlayerListLog struct {
|
||
LogId bson.ObjectId `bson:"_id"` //记录ID
|
||
Platform string // 平台
|
||
GameDif string // 游戏组
|
||
GameId int32 // 游戏id
|
||
GameClass int32 // 游戏类型
|
||
GameMode int32 // 游戏模式,弃用
|
||
GameType int32 // 游戏类型
|
||
GameFreeId int32 // 场次id
|
||
BaseScore int32 // 游戏底注
|
||
GameDetailedLogId string // 游戏记录Id
|
||
Channel string // 包类型
|
||
ChannelId string // 推广渠道
|
||
RoomType int32 // 房间类型
|
||
Ts int64 // 记录时间
|
||
Time time.Time // 记录时间
|
||
CycleId string // 本轮id,打一轮有多局
|
||
|
||
SnId int32 // 用户Id
|
||
Name string // 名称
|
||
SceneId int32 // 房间id,会重复
|
||
MatchId int64 // 比赛ID,应该用字符串的
|
||
MatchType int64 // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属
|
||
WinAmountNoAnyTax int64 // 盈利金额,不包含任何税
|
||
TaxCoin int64 // 税收
|
||
BetAmount int64 // 下注金额
|
||
IsFirstGame bool // 是否第一次游戏
|
||
TotalIn int64 // 本局投入
|
||
TotalOut int64 // 本局产出
|
||
IsFree bool // 拉霸专用 是否免费
|
||
WinSmallGame int64 // 拉霸专用 小游戏奖励
|
||
WinTotal int64 // 拉霸专用 输赢
|
||
}
|
||
|
||
type GamePlayerListRet struct {
|
||
Gtr *GameTotalRecord
|
||
Gplt GamePlayerListType
|
||
}
|
||
|
||
func InsertGamePlayerListLog(log *GamePlayerListLog) error {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.InsertGamePlayerListLog rpcCli == nil")
|
||
return errors.New("rpcCli == nil")
|
||
}
|
||
var ret bool
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.InsertGamePlayerListLog", log, &ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.InsertGamePlayerListLog is error", err)
|
||
return err
|
||
}
|
||
return nil
|
||
}
|
||
|
||
type NeedGameRecord struct {
|
||
LogId bson.ObjectId `bson:"_id"` //记录ID
|
||
SnId int32 //用户Id
|
||
Username string //三方用户名
|
||
ClubId int32 //俱乐部Id
|
||
ClubRoom string //俱乐部包间
|
||
GameFreeid int32 //游戏类型
|
||
TaxCoin int64 //税收
|
||
ClubPumpCoin int64 //俱乐部额外抽水
|
||
TotalIn int64 //本局投入
|
||
TotalOut int64 //本局产出
|
||
BetAmount int64 //投注金额(仅在个人中心表现使用,有原始数据加工得到)
|
||
WinAmountNoAnyTax int64 //盈利金额,不包含任何税(仅在个人中心表现使用,有原始数据加工得到)
|
||
SceneId int32 //场景ID
|
||
Ts int32 //记录时间
|
||
RoomType int32
|
||
GameDetailedLogId string // 游戏记录id
|
||
ThirdOrderId string // 三方游戏记录id
|
||
IsFree bool //拉霸专用 是否免费
|
||
WinSmallGame int64 //拉霸专用 小游戏奖励
|
||
WinTotal int64 //拉霸专用 输赢
|
||
MatchType int32 //0.普通场 1.锦标赛 2.冠军赛 3.vip专属
|
||
}
|
||
|
||
type RecentGameIDs struct {
|
||
GameID int32
|
||
}
|
||
|
||
type GamePlayerListType struct {
|
||
PageNo int //当前页码
|
||
PageSize int //每页数量
|
||
PageSum int //总页码
|
||
Data []*NeedGameRecord //当页数据
|
||
*GameTotalRecord
|
||
}
|
||
type TotalCoin struct {
|
||
TotalIn int64 //本局投入
|
||
TotalOut int64 //本局产出
|
||
TaxCoin int64 //税收
|
||
ClubPumpCoin int64 //俱乐部额外抽水
|
||
}
|
||
type GamePlayerListArg struct {
|
||
SnId int32
|
||
Platform string
|
||
StartTime, EndTime int64
|
||
ClubId int32
|
||
PageNo, PageSize, GameId int
|
||
RoomType, GameClass int32
|
||
}
|
||
type GamePlayerListAPIArg struct {
|
||
SnId int32
|
||
Platform string
|
||
StartTime, EndTime int64
|
||
PageNo, PageSize int
|
||
}
|
||
|
||
type GamePlayerExistListArg struct {
|
||
SnId int32
|
||
Platform string
|
||
StartTime int64
|
||
DayNum int
|
||
}
|
||
|
||
func GetPlayerCount(SnId int32, platform string, startTime, endTime int64, clubId int32) *GameTotalRecord {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerCount rpcCli == nil")
|
||
return nil
|
||
}
|
||
if clubId == 0 {
|
||
return nil
|
||
}
|
||
args := &GamePlayerListArg{
|
||
SnId: SnId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
EndTime: endTime,
|
||
ClubId: clubId,
|
||
}
|
||
ret := &GamePlayerListRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerCount", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerCount is error", err)
|
||
return nil
|
||
}
|
||
return ret.Gtr
|
||
}
|
||
|
||
func GetPlayerListLog(snId int32, platform string, pageNo, pageSize int, startTime, endTime int64, clubId int32, n int) (gpt GamePlayerListType) {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerListLog rpcCli == nil")
|
||
return
|
||
}
|
||
if n == 1 {
|
||
gpt.GameTotalRecord = GetPlayerCount(snId, platform, startTime, endTime, clubId)
|
||
}
|
||
if clubId == 0 {
|
||
return
|
||
}
|
||
args := &GamePlayerListArg{
|
||
SnId: snId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
EndTime: endTime,
|
||
ClubId: clubId,
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
}
|
||
ret := &GamePlayerListRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerListLog", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerListLog is error", err)
|
||
return
|
||
}
|
||
return ret.Gplt
|
||
}
|
||
|
||
func GetPlayerListByHall(snId int32, platform string, pageNo, pageSize int, startTime, endTime int64, roomType, gameClass int32) (gdt GamePlayerListType) {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerListByHall rpcCli == nil")
|
||
return
|
||
}
|
||
args := &GamePlayerListArg{
|
||
SnId: snId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
EndTime: endTime,
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
RoomType: roomType,
|
||
GameClass: gameClass,
|
||
}
|
||
ret := &GamePlayerListRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerListByHall", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerListByHall is error", err)
|
||
return
|
||
}
|
||
return ret.Gplt
|
||
}
|
||
|
||
func GetPlayerListByHallEx(snId int32, platform string, pageNo, pageSize int, startTime, endTime int64, roomType, gameClass int32, gameid int) (gdt GamePlayerListType) {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerListByHall rpcCli == nil")
|
||
return
|
||
}
|
||
args := &GamePlayerListArg{
|
||
SnId: snId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
EndTime: endTime,
|
||
PageNo: pageNo,
|
||
PageSize: pageSize,
|
||
RoomType: roomType,
|
||
GameClass: gameClass,
|
||
GameId: gameid,
|
||
}
|
||
ret := &GamePlayerListRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerListByHallEx", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerListByHallEx is error", err)
|
||
return
|
||
}
|
||
return ret.Gplt
|
||
}
|
||
|
||
func GetPlayerListByHallExAPI(snId int32, platform string, startTime, endTime int64, pageno, pagesize int) (gdt GamePlayerListType) {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerListByHallExAPI rpcCli == nil")
|
||
return
|
||
}
|
||
args := &GamePlayerListAPIArg{
|
||
SnId: snId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
EndTime: endTime,
|
||
PageNo: pageno,
|
||
PageSize: pagesize,
|
||
}
|
||
ret := &GamePlayerListRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerListByHallExAPI", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerListByHallExAPI is error", err)
|
||
return
|
||
}
|
||
return ret.Gplt
|
||
}
|
||
|
||
func GetPlayerExistListByTs(snId int32, platform string, startTime int64, dayNum int) []int64 {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetPlayerExistListByTs rpcCli == nil")
|
||
return nil
|
||
}
|
||
args := &GamePlayerExistListArg{
|
||
SnId: snId,
|
||
Platform: platform,
|
||
StartTime: startTime,
|
||
DayNum: dayNum,
|
||
}
|
||
var ret []int64
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetPlayerExistListByTs", args, &ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetPlayerExistListByTs is error", err)
|
||
return nil
|
||
}
|
||
return ret
|
||
}
|
||
|
||
type RecentGameReq struct {
|
||
Platform string
|
||
SnID int32
|
||
}
|
||
|
||
type RecentGameRet struct {
|
||
GameID []int32
|
||
}
|
||
|
||
func GetRecentGame(platform string, snid int32) []int32 {
|
||
if rpcCli == nil {
|
||
logger.Logger.Error("model.GetRecentGame rpcCli == nil")
|
||
return nil
|
||
}
|
||
args := &RecentGameReq{
|
||
platform,
|
||
snid,
|
||
}
|
||
ret := &RecentGameRet{}
|
||
err := rpcCli.CallWithTimeout("GamePlayerListSvc.GetRecentGame", args, ret, time.Second*30)
|
||
if err != nil {
|
||
logger.Logger.Error("model.GetRecentGame is error", err)
|
||
return nil
|
||
}
|
||
return ret.GameID
|
||
}
|