invite.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package models
  2. import (
  3. "github.com/mhaya/game/game_cluster/internal/data"
  4. mhayaLogger "github.com/mhaya/logger"
  5. )
  6. func NewInviteNodeReward() InviteNodeReward {
  7. return make(map[int]*InviteNodeRewardItem)
  8. }
  9. type InviteNodeReward map[int]*InviteNodeRewardItem
  10. type InviteNodeRewardItem struct {
  11. ID int `json:"ID" bson:"ID"`
  12. IsClaim int `json:"isClaim" bson:"isClaim"` // 是否领取
  13. IsUnlock int `json:"isUnlock" bson:"isUnlock"` // 是否解锁
  14. Reward []data.ItemReward `json:"reward" bson:"reward"` // 奖励
  15. RewardTime int64 `json:"rewardTime" bson:"rewardTime"` //领取奖励时间
  16. Condition int `json:"condition" bson:"condition"` // 节点条件
  17. }
  18. type InviteReward struct {
  19. IsClaim int `json:"isClaim" bson:"isClaim"`
  20. Reward []data.ItemReward `json:"reward" bson:"reward"`
  21. RewardTime int64 `json:"rewardTime" bson:"rewardTime"`
  22. }
  23. type Invite map[int]*InviteModel
  24. type InviteModel struct {
  25. Type int `json:"type" bson:"type"` //2普通3会员
  26. Num int `json:"num" bson:"num"`
  27. Reward map[int]*data.ItemReward `json:"reward" bson:"reward"`
  28. }
  29. func NewFirstReward() FirstReward {
  30. return make(map[int]*FirstRewardItem)
  31. }
  32. type FirstReward map[int]*FirstRewardItem
  33. type FirstRewardItem struct {
  34. IsClaim int `json:"isClaim" bson:"isClaim"`
  35. Reward []data.ItemReward `json:"reward" bson:"reward"`
  36. RewardTime int64 `json:"rewardTime" bson:"rewardTime"`
  37. }
  38. func NewInvite() map[int]*InviteModel {
  39. var invite = make(map[int]*InviteModel)
  40. invite[InvitePlayer] = &InviteModel{
  41. Type: InvitePlayer,
  42. Num: 0,
  43. }
  44. invite[InvitePlayer].Reward = make(map[int]*data.ItemReward)
  45. invite[InviteVipPlayer] = &InviteModel{
  46. Type: InviteVipPlayer,
  47. Num: 0,
  48. }
  49. invite[InviteVipPlayer].Reward = make(map[int]*data.ItemReward)
  50. return invite
  51. }
  52. func (i Invite) Set(tp int, reward []data.ItemReward) {
  53. if _, ok := i[tp]; ok {
  54. i[tp].Num += 1
  55. mhayaLogger.Infof("player set total invite, tp=%v,num=%v", tp, i[tp].Num)
  56. for _, v := range reward {
  57. if _, ok = i[tp].Reward[v.ItemID]; ok {
  58. i[tp].Reward[v.ItemID].Amount += v.Amount
  59. } else {
  60. i[tp].Reward[v.ItemID] = &v
  61. }
  62. }
  63. }
  64. }
  65. func (ir *InviteReward) Merge() {
  66. m := make(map[int]int)
  67. for _, kv := range ir.Reward {
  68. m[kv.ItemID] += kv.Amount
  69. }
  70. result := make([]data.ItemReward, 0, len(m))
  71. for k, v := range m {
  72. result = append(result, data.ItemReward{ItemID: k, Amount: v, ItemBaseType: 1})
  73. }
  74. ir.Reward = result
  75. }