reward.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package models
  2. import (
  3. cutils "github.com/mhaya/extend/utils"
  4. "github.com/mhaya/game/game_cluster/internal/constant"
  5. "github.com/mhaya/game/game_cluster/internal/data"
  6. "go.mongodb.org/mongo-driver/bson"
  7. )
  8. const (
  9. SourceGuide = 1
  10. SourceRoll = 2
  11. SourceSignIn = 3
  12. SourceDailyTask = 4
  13. SourceAchieveTask = 5
  14. SourceRank = 6
  15. SourceInvite = 7
  16. SourceRefreshRoll = 8
  17. SourceShare = 9
  18. SourceLevelUp = 10
  19. SourceDraw = 11
  20. SourceCashOut = 12
  21. )
  22. type PlayerRewardBase struct {
  23. UserName string `json:"userName" bson:"userName"`
  24. Source int `json:"source" json:"source"`
  25. SourceId int `json:"sourceId" json:"sourceId"`
  26. AddReward []data.ItemReward `json:"AddReward" bson:"addReward"`
  27. SubReward []data.ItemReward `json:"SubReward" bson:"subReward"`
  28. Desc interface{} `json:"desc" bson:"desc"`
  29. CreateTime int64 `json:"createTime" bson:"createTime"`
  30. }
  31. type ToPlayerReward struct {
  32. ID string `json:"id" bson:"_id"`
  33. UserName string `json:"userName" bson:"userName"`
  34. AddReward []data.ItemReward `json:"AddReward" bson:"addReward"`
  35. CreateTime int64 `json:"createTime" bson:"createTime"`
  36. }
  37. type PlayerReward map[int]*PlayerRewardBase
  38. func NewPlayerReward() map[int]*PlayerRewardBase {
  39. return make(map[int]*PlayerRewardBase)
  40. }
  41. type ToPlayerRewardBase struct {
  42. UserName string `json:"userName" bson:"userName"`
  43. AddReward []*ToItemReward `json:"AddReward" bson:"addReward"`
  44. Desc interface{} `json:"desc" bson:"desc"`
  45. CreateTime int64 `json:"createTime" bson:"createTime"`
  46. }
  47. type ToItemReward struct {
  48. ItemID int // itemID:道具ID
  49. Amount float64 // amount:数量
  50. ItemName string // itemName:道具名称
  51. }
  52. type ToDesc struct {
  53. ID int `json:"id" bson:"id"`
  54. CurID int `json:"cur_id" bson:"curid"`
  55. }
  56. func (uw *PlayerRewardBase) To() *ToPlayerRewardBase {
  57. return &ToPlayerRewardBase{
  58. UserName: uw.UserName,
  59. AddReward: func() []*ToItemReward {
  60. ret := make([]*ToItemReward, 0, 8)
  61. for _, v := range uw.AddReward {
  62. itemName := ""
  63. cfg, exist := data.ItemConfig.Get(v.ItemID)
  64. if exist {
  65. itemName = cfg.ItemKey
  66. }
  67. ret = append(ret, &ToItemReward{
  68. ItemID: v.ItemID,
  69. Amount: func() float64 {
  70. if itemName == "u" || itemName == "ton" {
  71. return cutils.QuoInt64ByRatioToFloat64(int64(v.Amount), constant.MoneyRatio)
  72. }
  73. return float64(v.Amount)
  74. }(),
  75. ItemName: itemName,
  76. })
  77. }
  78. return ret
  79. }(),
  80. Desc: func() *ToDesc {
  81. if uw.Desc == nil {
  82. return nil
  83. }
  84. drawMap := uw.Desc.(bson.D).Map()
  85. return &ToDesc{
  86. ID: int(drawMap["id"].(int32)),
  87. CurID: int(drawMap["curid"].(int32)),
  88. }
  89. }(),
  90. // Desc: uw.Desc,
  91. CreateTime: uw.CreateTime,
  92. }
  93. }