|
@@ -3,8 +3,11 @@ package service
|
|
|
import (
|
|
|
"context"
|
|
|
"log"
|
|
|
+ "time"
|
|
|
|
|
|
+ mhayaTime "github.com/mhaya/extend/time"
|
|
|
"github.com/mhaya/game/game_cluster/internal/constant"
|
|
|
+ "github.com/mhaya/game/game_cluster/internal/data"
|
|
|
"github.com/mhaya/game/game_cluster/internal/mdb"
|
|
|
"github.com/mhaya/game/game_cluster/internal/mdb/models"
|
|
|
"github.com/mhaya/game/game_cluster/nodes/webadmin/entity"
|
|
@@ -151,3 +154,84 @@ func (a *PlayerManage) PlayerInfo(ctx context.Context, req entity.PlayerInfoReq)
|
|
|
FirstReward: player.FirstReward,
|
|
|
}, nil
|
|
|
}
|
|
|
+
|
|
|
+// 获取玩家中奖记录(默认查询最近三天)
|
|
|
+func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq) ([]*entity.RewardListResp, int64, error) {
|
|
|
+ page := req.Page
|
|
|
+ // 验证参数
|
|
|
+ if page <= 0 {
|
|
|
+ page = 1
|
|
|
+ }
|
|
|
+ pageSize := req.Size
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = 10
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建查询条件
|
|
|
+ filter := bson.M{}
|
|
|
+ if req.UserName != "" {
|
|
|
+ filter["userName"] = bson.M{"$regex": escapeRegex(req.UserName), "$options": "i"}
|
|
|
+ }
|
|
|
+
|
|
|
+ startTime := mhayaTime.Now().StartOfDay().Unix()
|
|
|
+ endTime := mhayaTime.Now().EndOfDay().Add(3 * 24 * time.Hour).Unix()
|
|
|
+ if req.StartTime > 0 && req.StartTime < req.EndTime {
|
|
|
+ startTime = req.StartTime
|
|
|
+ }
|
|
|
+
|
|
|
+ if req.EndTime > 0 && req.EndTime <= endTime {
|
|
|
+ endTime = req.EndTime
|
|
|
+ }
|
|
|
+
|
|
|
+ filter["createTime"] = bson.M{
|
|
|
+ "$gte": startTime,
|
|
|
+ "$lte": endTime,
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置分页选项
|
|
|
+ skip := (page - 1) * pageSize
|
|
|
+ limit := pageSize
|
|
|
+ findOptions := options.Find().SetSkip(int64(skip)).SetLimit(int64(limit))
|
|
|
+
|
|
|
+ collection := mdb.MDB.Collection(constant.CNamePlayerReward)
|
|
|
+ // 获取总数total
|
|
|
+ count, err := collection.CountDocuments(ctx, filter)
|
|
|
+ if err != nil {
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行查询
|
|
|
+ cursor, err := collection.Find(ctx, filter, findOptions)
|
|
|
+ if err != nil {
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if closeErr := cursor.Close(ctx); closeErr != nil {
|
|
|
+ log.Printf("Error closing cursor: %v", closeErr)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 解析结果
|
|
|
+ results := make([]*entity.RewardListResp, 0)
|
|
|
+ for cursor.Next(ctx) {
|
|
|
+ var result entity.RewardListResp
|
|
|
+ if err := cursor.Decode(&result); err != nil {
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+ results = append(results, &result)
|
|
|
+ }
|
|
|
+ if err := cursor.Err(); err != nil {
|
|
|
+ return nil, 0, err
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, result := range results {
|
|
|
+ for _, v := range result.AddReward {
|
|
|
+ cfg, exist := data.ItemConfig.Get(v.ItemID)
|
|
|
+ if exist {
|
|
|
+ v.ItemName = cfg.ItemKey
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return results, count, nil
|
|
|
+}
|