Explorar o código

update 完善获取转盘中奖记录;完善玩家详情

Alvin hai 8 meses
pai
achega
b266215611

+ 64 - 0
game/game_cluster/internal/mdb/models/reward.go

@@ -1,7 +1,10 @@
 package models
 
 import (
+	cutils "github.com/mhaya/extend/utils"
+	"github.com/mhaya/game/game_cluster/internal/constant"
 	"github.com/mhaya/game/game_cluster/internal/data"
+	"go.mongodb.org/mongo-driver/bson"
 )
 
 const (
@@ -34,3 +37,64 @@ type PlayerReward map[int]*PlayerRewardBase
 func NewPlayerReward() map[int]*PlayerRewardBase {
 	return make(map[int]*PlayerRewardBase)
 }
+
+type ToPlayerRewardBase struct {
+	UserName   string          `json:"userName" bson:"userName"`
+	AddReward  []*ToItemReward `json:"AddReward" bson:"addReward"`
+	Desc       interface{}     `json:"desc" bson:"desc"`
+	CreateTime int64           `json:"createTime" bson:"createTime"`
+}
+
+type ToItemReward struct {
+	ItemID   int     // itemID:道具ID
+	Amount   float64 // amount:数量
+	ItemName string  // itemName:道具名称
+}
+
+type ToDesc struct {
+	ID    int `json:"id" bson:"id"`
+	CurID int `json:"cur_id" bson:"curid"`
+}
+
+func (uw *PlayerRewardBase) To() *ToPlayerRewardBase {
+	return &ToPlayerRewardBase{
+		UserName: uw.UserName,
+		AddReward: func() []*ToItemReward {
+			ret := make([]*ToItemReward, 0, 8)
+			for _, v := range uw.AddReward {
+				itemName := ""
+				cfg, exist := data.ItemConfig.Get(v.ItemID)
+				if exist {
+					itemName = cfg.ItemKey
+				}
+
+				ret = append(ret, &ToItemReward{
+					ItemID: v.ItemID,
+					Amount: func() float64 {
+						if itemName == "u" || itemName == "ton" {
+							return cutils.QuoInt64ByRatioToFloat64(int64(v.Amount), constant.MoneyRatio)
+						}
+
+						return float64(v.Amount)
+					}(),
+					ItemName: itemName,
+				})
+			}
+
+			return ret
+		}(),
+		Desc: func() *ToDesc {
+			if uw.Desc == nil {
+				return nil
+			}
+
+			drawMap := uw.Desc.(bson.D).Map()
+			return &ToDesc{
+				ID:    int(drawMap["id"].(int32)),
+				CurID: int(drawMap["curid"].(int32)),
+			}
+		}(),
+		// Desc:       uw.Desc,
+		CreateTime: uw.CreateTime,
+	}
+}

+ 37 - 39
game/game_cluster/nodes/webadmin/entity/admin.go

@@ -1,5 +1,7 @@
 package entity
 
+import "github.com/mhaya/game/game_cluster/internal/mdb/models"
+
 // AdminResp \game\game_cluster\nodes\webadmin\entity\admin.go
 type AdminResp struct {
 	ToKen  string `json:"token"`
@@ -107,31 +109,39 @@ type PlayerInfoReq struct {
 }
 
 type PlayerInfoResp struct {
-	UserName       string `json:"userName" bson:"userName"`             // 用户名
-	OpenId         string `json:"openId" bson:"openId"`                 // 对应tgid
-	UserNameMaybe  string `json:"userNameMaybe" bson:"userNameMaybe"`   // 昵称
-	NickName       string `json:"nickName" bson:"nickName"`             // 昵称
-	Pid            string `json:"pid" bson:"pid"`                       // 上级ID
-	XID            string `json:"xID" bson:"xID"`                       // 绑定推特ID
-	TonWall        string `json:"tonWall" bson:"tonWall"`               // 绑定钱包地址
-	Email          string `json:"email" bson:"email"`                   // 邮箱
-	Level          int    `json:"level" bson:"level"`                   // 等级
-	Status         int    `json:"status" bson:"status"`                 // 状态  1:有效 2:禁用
-	LoginTime      int64  `json:"loginTime" bson:"loginTime"`           // 登陆时间
-	LoginIP        string `json:"loginIP" bson:"loginIP"`               // 登录IP
-	JoinIP         string `json:"joinIP" bson:"joinIP"`                 // 注册IP
-	JoinTime       int64  `json:"joinTime" bson:"joinTime"`             // 注册时间
-	Avatar         string `json:"avatar" bson:"avatar"`                 // 头像
-	IsRobot        int    `json:"isRobot" bson:"isRobot"`               // 是否为机器人
-	IsLeader       int    `json:"isLeader" bson:"isLeader"`             // 是否是社区长
-	IsVip          int    `json:"isVip" bson:"isVip"`                   // 是否为VIP
-	Successions    int    `json:"successions" bson:"successions"`       // 连续登陆天数
-	MaxSuccessions int    `json:"maxSuccessions" bson:"maxSuccessions"` // 最大连续等级天数
-	PrevTime       int64  `json:"prevTime" bson:"prevTime"`             // 上次登陆时间
-	UpdateTime     int64  `json:"updateTime" bson:"updateTime"`         // 更新时间
-	IsDrawShare    int    `json:"isDrawShare" bson:"isDrawShare"`       // 0未领取,1已领取
-	DrawShareTime  int64  `json:"drawShareTime" bson:"drawShareTime"`   // 领取时间
-	FirstReward    int    `json:"firstReward" bson:"firstReward"`       // 是否已领取首次登陆奖励
+	UserName       string               `json:"userName" bson:"userName"`             // 用户名
+	OpenId         string               `json:"openId" bson:"openId"`                 // 对应tgid
+	UserNameMaybe  string               `json:"userNameMaybe" bson:"userNameMaybe"`   // 昵称
+	NickName       string               `json:"nickName" bson:"nickName"`             // 昵称
+	Pid            string               `json:"pid" bson:"pid"`                       // 上级ID
+	XID            string               `json:"xID" bson:"xID"`                       // 绑定推特ID
+	TonWall        string               `json:"tonWall" bson:"tonWall"`               // 绑定钱包地址
+	Email          string               `json:"email" bson:"email"`                   // 邮箱
+	Level          int                  `json:"level" bson:"level"`                   // 等级
+	Status         int                  `json:"status" bson:"status"`                 // 状态  1:有效 2:禁用
+	LoginTime      int64                `json:"loginTime" bson:"loginTime"`           // 登陆时间
+	LoginIP        string               `json:"loginIP" bson:"loginIP"`               // 登录IP
+	JoinIP         string               `json:"joinIP" bson:"joinIP"`                 // 注册IP
+	JoinTime       int64                `json:"joinTime" bson:"joinTime"`             // 注册时间
+	Avatar         string               `json:"avatar" bson:"avatar"`                 // 头像
+	IsRobot        int                  `json:"isRobot" bson:"isRobot"`               // 是否为机器人
+	IsLeader       int                  `json:"isLeader" bson:"isLeader"`             // 是否是社区长
+	IsVip          int                  `json:"isVip" bson:"isVip"`                   // 是否为VIP
+	Successions    int                  `json:"successions" bson:"successions"`       // 连续登陆天数
+	MaxSuccessions int                  `json:"maxSuccessions" bson:"maxSuccessions"` // 最大连续等级天数
+	PrevTime       int64                `json:"prevTime" bson:"prevTime"`             // 上次登陆时间
+	UpdateTime     int64                `json:"updateTime" bson:"updateTime"`         // 更新时间
+	IsDrawShare    int                  `json:"isDrawShare" bson:"isDrawShare"`       // 0未领取,1已领取
+	DrawShareTime  int64                `json:"drawShareTime" bson:"drawShareTime"`   // 领取时间
+	FirstReward    int                  `json:"firstReward" bson:"firstReward"`       // 是否已领取首次登陆奖励
+	Item           models.ItemBasePack  `json:"item" bson:"item"`                     // 道具
+	SinIn          models.SignIn        `json:"sinIn" bson:"sinIn"`                   // 签到
+	DailyTask      models.DailyTask     `json:"dailyTask" bson:"dailyTask"`           // 日常任务
+	AchieveTask    models.AchieveTask   `json:"achieveTask" bson:"achieveTask"`       // 成就任务
+	RankReward     models.RankReward    `json:"rankReward" bson:"rankReward"`         // 排行奖励
+	Invite         models.Invite        `json:"invite" bson:"invite"`                 // 邀请
+	InviteReward   *models.InviteReward `json:"inviteReward" bson:"inviteReward"`     // 邀请奖励
+	Roll           *models.Roll         `json:"roll" bson:"roll"`                     // 抽奖
 }
 
 type RewardListReq struct {
@@ -143,18 +153,6 @@ type RewardListReq struct {
 }
 
 type RewardListResp struct {
-	Details []*RewardListDetail `json:"details"`
-	Total   int64               `json:"total"`
-}
-
-type RewardListDetail struct {
-	UserName   string        `json:"userName" bson:"userName"` // 用户名
-	AddReward  []*ItemReward `json:"AddReward" bson:"addReward"`
-	CreateTime int64         `json:"createTime" bson:"createTime"`
-}
-
-type ItemReward struct {
-	ItemID   int    // itemID:道具ID
-	Amount   int    // amount:数量
-	ItemName string // itemName:道具名称
+	Details []*models.ToPlayerRewardBase `json:"details"`
+	Total   int64                        `json:"total"`
 }

+ 27 - 18
game/game_cluster/nodes/webadmin/service/playerMange.go

@@ -7,7 +7,6 @@ import (
 	mhayaTime "github.com/mhaya/extend/time"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"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/common"
@@ -55,6 +54,12 @@ func (a *PlayerManage) List(ctx context.Context, req entity.PlayerListReq) (*ent
 	if req.Email != "" {
 		filter["email"] = req.Email
 	}
+	if req.LevelMin > 0 && req.LevelMax == 0 {
+		filter["level"] = bson.M{
+			"$gte": req.LevelMin,
+			"$lte": 1000, // 等级最大值
+		}
+	}
 	if req.LevelMin > 0 && req.LevelMax > 0 && req.LevelMin <= req.LevelMax {
 		filter["level"] = bson.M{
 			"$gte": req.LevelMin,
@@ -167,6 +172,14 @@ func (a *PlayerManage) PlayerInfo(ctx context.Context, req entity.PlayerInfoReq)
 		IsDrawShare:    player.Share.IsDrawShare,
 		DrawShareTime:  player.Share.DrawShareTime,
 		FirstReward:    player.FirstReward,
+		Item:           player.Item,
+		SinIn:          player.SinIn,
+		DailyTask:      player.DailyTask,
+		AchieveTask:    player.AchieveTask,
+		RankReward:     player.RankReward,
+		Invite:         player.Invite,
+		InviteReward:   player.InviteReward,
+		Roll:           player.Roll,
 	}, nil
 }
 
@@ -179,15 +192,20 @@ func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq)
 	if req.UserName != "" {
 		filter["userName"] = bson.M{"$regex": escapeRegex(req.UserName), "$options": "i"}
 	}
+	filter["source"] = models.SourceDraw
 
-	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
+	startTime := mhayaTime.Now().Add(-3 * 24 * time.Hour).Unix()
+	endTime := mhayaTime.Now().Unix()
+	if req.StartTime > 0 && req.StartTime >= startTime {
+		if req.StartTime <= req.EndTime || req.EndTime == 0 {
+			startTime = req.StartTime
+		}
 	}
 
 	if req.EndTime > 0 && req.EndTime <= endTime {
-		endTime = req.EndTime
+		if req.StartTime <= req.EndTime {
+			endTime = req.EndTime
+		}
 	}
 
 	filter["createTime"] = bson.M{
@@ -221,29 +239,20 @@ func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq)
 	}()
 
 	// 解析结果
-	results := make([]*entity.RewardListDetail, 0)
+	results := make([]*models.ToPlayerRewardBase, 0)
 	for cursor.Next(ctx) {
-		var result entity.RewardListDetail
+		var result models.PlayerRewardBase
 		if err := cursor.Decode(&result); err != nil {
 			mhayaLogger.Warnf("RewardList Decode error:%v", err)
 			return nil, common.NewResult(code.InternalError)
 		}
-		results = append(results, &result)
+		results = append(results, result.To())
 	}
 	if err := cursor.Err(); err != nil {
 		mhayaLogger.Warnf("RewardList cursor error:%v", err)
 		return nil, common.NewResult(code.InternalError)
 	}
 
-	for _, result := range results {
-		for _, v := range result.AddReward {
-			cfg, exist := data.ItemConfig.Get(v.ItemID)
-			if exist {
-				v.ItemName = cfg.ItemKey
-			}
-		}
-	}
-
 	return &entity.RewardListResp{
 		Details: results,
 		Total:   count,