package service import ( "context" "time" "github.com/mhaya/game/game_cluster/internal/mdb" "github.com/mhaya/game/game_cluster/nodes/webadmin/entity" mdb2 "github.com/mhaya/game/game_cluster/nodes/webadmin/mdb" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) type Synthesis struct { db *mongo.Database } func NewSynthesis() *Synthesis { return &Synthesis{ db: mdb2.MdbAdmin, } } func (s *Synthesis) FindMDBUserLogDaily(req *entity.UserLogDailyReq) ([]*entity.UserLogDailyResp, error) { // 定义上下文 ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second) defer cancel() // 指定集合 collection := s.db.Collection("user_logs_daily") // 构建查询条件 - 如果查询值为空那就不添加查询条件 filter := bson.M{} if req.StartTime != 0 { filter["timestamp"] = bson.M{ "$gte": req.StartTime, "$lte": req.EndTime, } } if req.Platform != "" { filter["platform"] = req.Platform } if req.Channel != "" { filter["channel"] = req.Channel } // 分页参数 skip := (req.Page - 1) * req.Size // 执行查询 opts := options.Find() opts.SetSkip(int64(skip)) opts.SetLimit(int64(req.Size)) cursor, err := collection.Find(ctx, filter, opts) if err != nil { return nil, err } defer cursor.Close(ctx) // 解析查询结果 var results []*entity.UserLogDailyResp for cursor.Next(ctx) { var result entity.UserLogDailyResp err := cursor.Decode(&result) if err != nil { return nil, err } results = append(results, &result) } if err := cursor.Err(); err != nil { return nil, err } return results, nil } // FindWithdrawal 根据请求查询提现记录 func (s *Synthesis) FindWithdrawal(req *entity.UserWithdrawalReq) ([]*entity.UserWithdrawalResp, error) { ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second) defer cancel() collection := mdb.MDB.Collection("CashOutRecord") // 构建过滤器 filter := bson.M{} if req.UserName != "" { filter["userName"] = req.UserName } if req.NickName != "" { filter["nickName"] = req.NickName } if req.StartTime > 0 && req.EndTime > 0 { filter["createdAt"] = bson.M{"$gte": time.Unix(req.StartTime, 0), "$lte": time.Unix(req.EndTime, 0)} } else if req.StartTime > 0 { filter["createdAt"] = bson.M{"$gte": time.Unix(req.StartTime, 0)} } else if req.EndTime > 0 { filter["createdAt"] = bson.M{"$lte": time.Unix(req.EndTime, 0)} } // 设置分页选项 findOptions := options.Find() findOptions.SetSkip(int64((req.Page - 1) * req.Size)) findOptions.SetLimit(int64(req.Size)) // 查询数据 var results []*entity.UserWithdrawalResp cursor, err := collection.Find(ctx, filter, findOptions) if err != nil { return nil, err } defer cursor.Close(ctx) // 解析结果 for cursor.Next(ctx) { var result entity.UserWithdrawalResp if err := cursor.Decode(&result); err != nil { return nil, err } results = append(results, &result) } if err := cursor.Err(); err != nil { return nil, err } return results, nil }