modify:平均游戏时长查询优化

This commit is contained in:
sk 2024-12-19 17:52:33 +08:00
parent 08023bcdea
commit bb8af52a6b
2 changed files with 8 additions and 12 deletions

View File

@ -45,7 +45,7 @@ func GetNewPayerIds(plt string, startTime, endTime string) ([]int, error) {
return ret, nil return ret, nil
} }
func GetPayerIds(plt string, startTime, endTime string) ([]int, error) { func GetPayerIds(plt string, startTime, endTime string, gamefreeid int) ([]int, error) {
s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime) s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime)
c, err := mymongo.GetLogCollection(plt, mongomodel.LogGamePlayerListLog) c, err := mymongo.GetLogCollection(plt, mongomodel.LogGamePlayerListLog)
if err != nil { if err != nil {
@ -54,7 +54,7 @@ func GetPayerIds(plt string, startTime, endTime string) ([]int, error) {
var res []struct{ Snid int } var res []struct{ Snid int }
dd, err := c.Aggregate(context.TODO(), bson.A{ dd, err := c.Aggregate(context.TODO(), bson.A{
bson.M{"$match": bson.M{"time": bson.M{"$gte": s, "$lt": e}}}, bson.M{"$match": bson.M{"time": bson.M{"$gte": s, "$lt": e}, "gamefreeid": gamefreeid}},
bson.M{"$group": bson.M{"_id": "$snid", "snid": bson.M{"$first": "$snid"}}}, bson.M{"$group": bson.M{"_id": "$snid", "snid": bson.M{"$first": "$snid"}}},
}) })
if err != nil { if err != nil {

View File

@ -36,7 +36,10 @@ func NewPlayerGameTime(plt string, ids []int, startTime, endTime string, gamefre
if gamefreeid > 0 { if gamefreeid > 0 {
where["gamefreeid"] = gamefreeid where["gamefreeid"] = gamefreeid
} }
cur, err := c.Find(context.TODO(), where, options.Find().SetProjection(bson.M{"gamedetailedlogid": 1})) cur, err := c.Aggregate(context.Background(), bson.A{
bson.M{"$match": where},
bson.M{"$group": bson.M{"_id": "$gamedetailedlogid", "gamedetailedlogid": bson.M{"$first": "$gamedetailedlogid"}}},
})
if err != nil { if err != nil {
logger.Logger.Errorf("find player gamedetailedlogid get err: %v", err) logger.Logger.Errorf("find player gamedetailedlogid get err: %v", err)
return 0, 0, err return 0, 0, err
@ -108,7 +111,7 @@ func PlayerGameTimeAvg(plt string, startTime, endTime string, gamefreeid int) (i
if s.IsZero() || e.IsZero() { if s.IsZero() || e.IsZero() {
return 0, 0, fmt.Errorf("time format error") return 0, 0, fmt.Errorf("time format error")
} }
ids, err := GetPayerIds(plt, startTime, endTime) ids, err := GetPayerIds(plt, startTime, endTime, gamefreeid)
if err != nil { if err != nil {
return 0, 0, err return 0, 0, err
} }
@ -123,12 +126,5 @@ func PlayerGameTimeAvg(plt string, startTime, endTime string, gamefreeid int) (i
return 0, 0, nil return 0, 0, nil
} }
b, err := PlayingGameCount(plt, ids, startTime, endTime, gamefreeid) return len(ids), a, err
if err != nil {
return 0, 0, err
}
if b == 0 {
return 0, 0, nil
}
return b, a, err
} }