Pārlūkot izejas kodu

update 完善用户奖励事件

Alvin 8 mēneši atpakaļ
vecāks
revīzija
e619bcd0a3

+ 5 - 5
game/game_cluster/internal/mdb/eventmodels/userRewardEvent.go

@@ -4,11 +4,11 @@ package eventmodels
 type UserRewardEventContent struct {
 	UserBasic
 	EventBasic
-	Source    int          `json:"source"` // 奖励来源
-	SourceId  int          `json:"sourceId"`
-	AddReward []ItemReward `json:"add_reward"` // 增加的道具
-	SubReward []ItemReward `json:"sub_reward"` // 减少的道具
-	Desc      interface{}  `json:"desc"`
+	Source    int    `json:"source"` // 奖励来源
+	SourceId  int    `json:"sourceId"`
+	AddReward string `json:"add_reward"` // 增加的道具json字符串 eg:[]ItemReward
+	SubReward string `json:"sub_reward"` // 减少的道具json字符串 eg:[]ItemReward
+	Desc      string `json:"desc"`       // json字符串
 }
 
 type ItemReward struct {

+ 48 - 36
game/game_cluster/nodes/webadmin/service/playerMange.go

@@ -3,6 +3,7 @@ package service
 import (
 	"context"
 
+	jsoniter "github.com/json-iterator/go"
 	cutils "github.com/mhaya/extend/utils"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
@@ -17,6 +18,10 @@ import (
 	"gorm.io/gorm"
 )
 
+var (
+	json = jsoniter.ConfigCompatibleWithStandardLibrary
+)
+
 type PlayerManage struct {
 	db *mongo.Database
 }
@@ -572,45 +577,52 @@ func (a *PlayerManage) RewardList(ctx context.Context, req entity.RewardListReq)
 
 	var results []*entity.RewardListDetail
 	for _, v := range rewardRecords {
-		results = append(results, &entity.RewardListDetail{
-			UserName: v.UserId,
-			AddReward: func() []*entity.ShowItemReward {
-				if len(v.AddReward) == 0 {
-					return nil
-				}
+		addReward := make([]*entity.ShowItemReward, 0, 8)
+
+		addRewards := make([]eventmodels.ItemReward, 0, 8)
+		if v.AddReward == "" {
+			addRewards = nil
+		} else {
+			err := json.Unmarshal([]byte(v.AddReward), &addRewards)
+			if err != nil {
+				mhayaLogger.Warnf("RewardList Unmarshal v.AddReward error:%v", err)
+				return nil, common.NewResult(code.InternalError)
+			}
+		}
 
-				ret := make([]*entity.ShowItemReward, 0, 8)
-				for _, item := range v.AddReward {
-					ret = append(ret, a.packItemReward(item))
-				}
-				return ret
-			}(),
-			Desc: func() *entity.Desc {
-				if v.Desc == nil {
-					return nil
-				}
+		if addRewards == nil {
+			addReward = nil
+		} else {
+			for _, item := range addRewards {
+				addReward = append(addReward, a.packItemReward(item))
+			}
+		}
 
-				param, ok := v.Desc.(eventmodels.DescDraw)
-				if ok {
-					return &entity.Desc{
-						ID:    param.ID,
-						CurID: param.CurID,
-						Reward: func() []*entity.ShowItemReward {
-							if len(param.Reward) == 0 {
-								return nil
-							}
-
-							ret := make([]*entity.ShowItemReward, 0, 8)
-							for _, item := range param.Reward {
-								ret = append(ret, a.packItemReward(item))
-							}
-							return ret
-						}(),
-					}
-				}
+		var desc *entity.Desc
+		if v.Desc != "" {
+			descDraw := eventmodels.DescDraw{}
+			err := json.Unmarshal([]byte(v.Desc), &descDraw)
+			if err != nil {
+				mhayaLogger.Warnf("RewardList Unmarshal v.Desc error:%v", err)
+				return nil, common.NewResult(code.InternalError)
+			}
 
-				return nil
-			}(),
+			ret := make([]*entity.ShowItemReward, 0, 8)
+			for _, item := range descDraw.Reward {
+				ret = append(ret, a.packItemReward(item))
+			}
+
+			desc = &entity.Desc{
+				ID:     descDraw.ID,
+				CurID:  descDraw.CurID,
+				Reward: ret,
+			}
+		}
+
+		results = append(results, &entity.RewardListDetail{
+			UserName:   v.UserId,
+			AddReward:  addReward,
+			Desc:       desc,
 			CreateTime: v.CreateAt,
 		})
 	}