游戏记录添加游戏组首次游戏时间和游戏次数

This commit is contained in:
sk 2024-12-16 16:33:41 +08:00
parent 490576b1dc
commit 442801fc9a
3 changed files with 93 additions and 25 deletions

View File

@ -898,3 +898,7 @@ var GuideIdToGainWay = map[int]int{
GuideIdNewPlayer: GainWayGuide, GuideIdNewPlayer: GainWayGuide,
GuideIdCustom: GainWayGuide2, GuideIdCustom: GainWayGuide2,
} }
func GetGameDifKey(gamedif string) string {
return fmt.Sprintf("gamedif-%v", gamedif)
}

View File

@ -638,8 +638,8 @@ type ReportGameEventOnly struct {
func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEventOnly { func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEventOnly {
// 记录玩家 首次参与该场次的游戏时间 游戏次数 // 记录玩家 首次参与该场次的游戏时间 游戏次数
var gameFirstTime, gameFreeFirstTime time.Time var gameFirstTime, gameFreeFirstTime, gamedifFirstTime time.Time
var gameTimes, gameFreeTimes int64 var gameTimes, gameFreeTimes, gamedifTimes int64
data, ok := this.GDatas[this.scene.KeyGamefreeId] data, ok := this.GDatas[this.scene.KeyGamefreeId]
if ok { if ok {
gameFreeFirstTime = data.FirstTime gameFreeFirstTime = data.FirstTime
@ -669,29 +669,32 @@ func (this *Player) ReportGameEvent(param *ReportGameEventParam) *ReportGameEven
var ret ReportGameEventOnly var ret ReportGameEventOnly
ret.Param = param ret.Param = param
log := &model.PlayerGameRecEvent{ log := &model.PlayerGameRecEvent{
Id: primitive.NewObjectID().Hex(), Id: primitive.NewObjectID().Hex(),
Platform: this.Platform, RecordId: this.scene.GetRecordId(),
RecordId: this.scene.GetRecordId(), SnId: this.GetSnId(),
SnId: this.GetSnId(), Channel: this.Channel,
Channel: this.Channel, Platform: this.Platform,
ChannelId: this.ChannelId, OS: this.DeviceOS,
OS: this.DeviceOS, GameId: this.scene.GameId,
GameId: this.scene.GameId, ModeId: this.scene.GameMode,
ModeId: this.scene.GameMode, Tax: param.Tax,
Tax: param.Tax, Amount: param.Change,
Amount: param.Change, CreateTime: time.Now().Unix(),
CreateTime: time.Now().Unix(), CreateDayTime: tCreateDay.Unix(),
CreateDayTime: tCreateDay.Unix(), Out: param.Out,
Out: param.Out, In: param.In,
In: param.In, IsNew: isNew,
IsNew: isNew, GameFreeID: this.scene.GetGameFreeId(),
GameFreeID: this.scene.GetGameFreeId(), GamingTime: int32(param.GameTime),
GamingTime: int32(param.GameTime), GameDif: this.scene.GetDBGameFree().GetGameDif(),
FirstTime: gameFreeFirstTime.Unix(), FirstGameDifTime: gamedifFirstTime.Unix(),
PlayTimes: gameFreeTimes, GameDifTimes: gamedifTimes,
FirstGameTime: gameFirstTime.Unix(), FirstTime: gameFreeFirstTime.Unix(),
PlayGameTimes: gameTimes, PlayTimes: gameFreeTimes,
LastLoginTime: this.LastLoginTime.Unix(), FirstGameTime: gameFirstTime.Unix(),
PlayGameTimes: gameTimes,
LastLoginTime: this.LastLoginTime.Unix(),
ChannelId: this.ChannelId,
} }
if param.OnlyLog { if param.OnlyLog {
ret.Log = append(ret.Log, log) ret.Log = append(ret.Log, log)

View File

@ -2057,6 +2057,7 @@ func (this *Scene) IsControl(hasRobotGaming bool) bool {
// Statistics 玩家游戏数据统计 // Statistics 玩家游戏数据统计
// 包含水池统计,黑白名单统计,新手调控统计,个人水池统计 // 包含水池统计,黑白名单统计,新手调控统计,个人水池统计
// 拉霸游戏数据统计,一次下注记录一次 StaticsLaba
func (this *Scene) Statistics(param *StaticParam) { func (this *Scene) Statistics(param *StaticParam) {
if param == nil { if param == nil {
return return
@ -2110,6 +2111,7 @@ func (this *Scene) Statistics(param *StaticParam) {
var statics []*model.PlayerGameStatics var statics []*model.PlayerGameStatics
keyGameId := strconv.Itoa(this.GetGameId()) keyGameId := strconv.Itoa(this.GetGameId())
keyGameFreeId := strconv.Itoa(int(this.GetGameFreeId())) keyGameFreeId := strconv.Itoa(int(this.GetGameFreeId()))
keyGameDif := common.GetGameDifKey(this.GetDBGameFree().GetGameDif())
// 当天数据统计 // 当天数据统计
// 按场次分 // 按场次分
if data, ok := p.TodayGameData.CtrlData[keyGameFreeId]; ok { if data, ok := p.TodayGameData.CtrlData[keyGameFreeId]; ok {
@ -2127,6 +2129,14 @@ func (this *Scene) Statistics(param *StaticParam) {
p.TodayGameData.CtrlData[keyGameId] = data p.TodayGameData.CtrlData[keyGameId] = data
statics = append(statics, data) statics = append(statics, data)
} }
// 按游戏组分
if data, ok := p.TodayGameData.CtrlData[keyGameDif]; ok {
statics = append(statics, data)
} else {
data = model.NewPlayerGameStatics()
p.TodayGameData.CtrlData[keyGameDif] = data
statics = append(statics, data)
}
// 按场次分 // 按场次分
if data, ok := p.GDatas[keyGameFreeId]; ok { if data, ok := p.GDatas[keyGameFreeId]; ok {
if data.FirstTime.IsZero() { if data.FirstTime.IsZero() {
@ -2149,6 +2159,27 @@ func (this *Scene) Statistics(param *StaticParam) {
p.GDatas[keyGameId] = data p.GDatas[keyGameId] = data
statics = append(statics, &data.Statics) statics = append(statics, &data.Statics)
} }
//按游戏组分
getMinTime := func() time.Time {
var minTime = time.Now()
for _, v := range srvdata.GameFreeMgr.GetGameId(this.GetDBGameFree().GetGameDif()) {
vv := p.GDatas[strconv.Itoa(int(v))]
if vv != nil && vv.FirstTime.Before(minTime) {
minTime = vv.FirstTime
}
}
return minTime
}
if data, ok := p.GDatas[keyGameDif]; ok {
if data.FirstTime.IsZero() {
data.FirstTime = getMinTime()
}
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: getMinTime()}
p.GDatas[keyGameDif] = data
statics = append(statics, &data.Statics)
}
// 新手输赢统计 // 新手输赢统计
if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice { if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice {
@ -2319,6 +2350,7 @@ func (this *Scene) StaticsLaba(param *StaticLabaParam) {
var statics []*model.PlayerGameStatics var statics []*model.PlayerGameStatics
keyGameId := strconv.Itoa(this.GetGameId()) keyGameId := strconv.Itoa(this.GetGameId())
keyGameFreeId := strconv.Itoa(int(this.GetGameFreeId())) keyGameFreeId := strconv.Itoa(int(this.GetGameFreeId()))
keyGameDif := common.GetGameDifKey(this.GetDBGameFree().GetGameDif())
// 当天数据统计 // 当天数据统计
// 按场次分 // 按场次分
if data, ok := p.TodayGameData.CtrlData[keyGameFreeId]; ok { if data, ok := p.TodayGameData.CtrlData[keyGameFreeId]; ok {
@ -2336,6 +2368,14 @@ func (this *Scene) StaticsLaba(param *StaticLabaParam) {
p.TodayGameData.CtrlData[keyGameId] = data p.TodayGameData.CtrlData[keyGameId] = data
statics = append(statics, data) statics = append(statics, data)
} }
// 按游戏组
if data, ok := p.TodayGameData.CtrlData[keyGameDif]; ok {
statics = append(statics, data)
} else {
data = model.NewPlayerGameStatics()
p.TodayGameData.CtrlData[keyGameDif] = data
statics = append(statics, data)
}
// 按场次分 // 按场次分
if data, ok := p.GDatas[keyGameFreeId]; ok { if data, ok := p.GDatas[keyGameFreeId]; ok {
if data.FirstTime.IsZero() { if data.FirstTime.IsZero() {
@ -2358,6 +2398,27 @@ func (this *Scene) StaticsLaba(param *StaticLabaParam) {
p.GDatas[keyGameId] = data p.GDatas[keyGameId] = data
statics = append(statics, &data.Statics) statics = append(statics, &data.Statics)
} }
// 按游戏组
getMinTime := func() time.Time {
var minTime = time.Now()
for _, v := range srvdata.GameFreeMgr.GetGameId(this.GetDBGameFree().GetGameDif()) {
vv := p.GDatas[strconv.Itoa(int(v))]
if vv != nil && vv.FirstTime.Before(minTime) {
minTime = vv.FirstTime
}
}
return minTime
}
if data, ok := p.GDatas[keyGameDif]; ok {
if data.FirstTime.IsZero() {
data.FirstTime = getMinTime()
}
statics = append(statics, &data.Statics)
} else {
data = &model.PlayerGameInfo{FirstTime: getMinTime()}
p.GDatas[keyGameDif] = data
statics = append(statics, &data.Statics)
}
for _, data := range statics { for _, data := range statics {
if data != nil { if data != nil {