package task import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "mongo.games.com/game/common" "mongo.games.com/goserver/core/mongox" ) var CoinName = map[int]string{ 44: "转盘", 57: "轮盘视频", 43: "签到", 58: "签到视频", 83: "累计签到", 91: "累计签到进阶奖励", 47: "vip每日礼包", 105: "vip等级礼包", 74: "集卡活动", 67: "金币存钱罐", 94: "赛季通行证等级奖励", 95: "赛季通行证排行奖励", 52: "排位赛段位奖励", 65: "周卡奖励", 5: "兑换", 49: "礼包码兑换", 38: "救济金", 56: "救济金视频", } func CoinHistory(plt string, startTime, endTime string, tp int, f func(data bson.M) error) error { s, e := common.StrRFC3339TimeToTime(startTime), common.StrRFC3339TimeToTime(endTime) if s.IsZero() || e.IsZero() { return fmt.Errorf("time format error") } c, err := mongox.GetLogCollection(plt, "log_coinex") if err != nil { return err } cur, err := c.Find(context.TODO(), bson.M{"time": bson.M{"$gte": s, "$lt": e}, "logtype": tp, "cointype": 0}) if err != nil { return err } defer cur.Close(context.Background()) for cur.TryNext(context.Background()) { data := bson.M{} if err := cur.Decode(data); err != nil { return err } if err := f(data); err != nil { return err } } return nil } func CoinAvg(plt string, startTime, endTime string, tp int) (playerNumber int, total int, err error) { player := make(map[int32]struct{}) err = CoinHistory(plt, startTime, endTime, tp, func(data bson.M) error { snid := data["snid"].(int32) count := int(data["count"].(int64)) player[snid] = struct{}{} if count > 0 { total += count } return nil }) if err != nil { return } playerNumber = len(player) return }