package task import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "mongo.games.com/game/common" mongomodel "mongo.games.com/game/statistics/modelmongo" "mongo.games.com/goserver/core/logger" mymongo "mongo.games.com/goserver/core/mongox" ) // 新用户平均局数 func NewPlayerGameCount(plt string, ids []int, startTime, endTime string, gamefreeid int) (int, error) { s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime) c, err := mymongo.GetLogCollection(plt, mongomodel.LogGamePlayerListLog) if err != nil { return 0, err } var ret int for _, v := range ids { n, err := c.CountDocuments(context.TODO(), bson.M{"snid": v, "gamefreeid": gamefreeid, "time": bson.M{"$gte": s, "$lt": e}}) if err != nil { logger.Logger.Errorf("find player gamedetailedlogid get err: %v", err) return 0, err } ret += int(n) } return ret, nil } // NewPlayerGameCountAvg 新用户平均局数 // 返回 参与人数,总局数 func NewPlayerGameCountAvg(plt string, startTime, endTime string, gamefreeid int) (int, int, error) { s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime) if s.IsZero() || e.IsZero() { return 0, 0, fmt.Errorf("time format error") } ids, err := GetNewPayerIds(plt, startTime, endTime) if err != nil { return 0, 0, err } n, err := NewPlayerGameCount(plt, ids, startTime, endTime, gamefreeid) if err != nil { return 0, 0, err } if len(ids) == 0 { return 0, 0, nil } b, err := PlayingGameCount(plt, ids, startTime, endTime, gamefreeid) if err != nil { return 0, 0, err } return b, n, nil }