migrate_zone_bonus.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package jobs
  2. import (
  3. "gadmin/config"
  4. "github.com/sirupsen/logrus"
  5. "os"
  6. "sync"
  7. )
  8. var MigrateZoneBonus = new(jMigrateZoneBonus)
  9. type jMigrateZoneBonus struct {
  10. sync.Mutex
  11. }
  12. func (j *jMigrateZoneBonus) Run() {
  13. logrus.Info("MigrateZoneBonus Run.....")
  14. if os.Getenv("GIN_MODE") != "release" && os.Getenv("ADMIN_IS_LOCAL") != "1" {
  15. logrus.Warnf("测试环境禁止同步")
  16. return
  17. }
  18. j.Lock()
  19. defer j.Unlock()
  20. for serverId, _ := range config.GDBGroup {
  21. j.sync(serverId)
  22. }
  23. }
  24. func (j *jMigrateZoneBonus) sync(serverId int) {
  25. //todo
  26. //DB, err := player.GetDBByServerID(serverId)
  27. //if err != nil {
  28. // logrus.Warningf("SyncChannel GetDBByServerID err:%v", err)
  29. // return
  30. //}
  31. //
  32. //var (
  33. // now = time.Now().Unix()
  34. // c = query.Use(config.GDBGroup[DB]).ZoneActivity
  35. // results []*model.ZoneActivity
  36. //)
  37. //
  38. //// BonusProperties 加成属性
  39. //type BonusProperties struct {
  40. // DifScale int `json:"difScale"` // 难度系数
  41. // RewardMulti float64 `json:"rewardMulti"` // 奖励倍数
  42. // RewardEffectTime int64 `json:"rewardEffectTime"` // 奖励倍数生效时间
  43. //}
  44. //
  45. //err = c.Select(c.Playerid, c.Difficulty).
  46. // //Where(c.ID.Gt(lastId)).
  47. // Where(c.Difficulty.Neq("{}")).
  48. // Order(c.Playerid). // 因为玩家ID是无序的,为了保证批量处理的顺序性和正确性,做个正排序处理
  49. // FindInBatches(&results, 500, func(tx gen.Dao, batch int) error {
  50. // for _, result := range results {
  51. // var difficulty map[uint]int
  52. // if result.Difficulty == "" {
  53. // continue
  54. // }
  55. //
  56. // err = json.Unmarshal([]byte(result.Difficulty), &difficulty)
  57. // if err != nil {
  58. // panic(err)
  59. // }
  60. //
  61. // if len(difficulty) == 0 {
  62. // continue
  63. // }
  64. //
  65. // isSave := false
  66. // bonusProperties := make(map[string]*BonusProperties)
  67. //
  68. // for chapterId, scale := range difficulty {
  69. // // 无效数据
  70. // if cast.ToInt64(chapterId) < 100 {
  71. // continue
  72. // }
  73. //
  74. // isSave = true
  75. // ck := fmt.Sprintf("%v_%v", chapterId, 0)
  76. // bonusProperties[ck] = new(BonusProperties)
  77. // bonusProperties[ck].DifScale = scale
  78. // bonusProperties[ck].RewardMulti = 1
  79. // bonusProperties[ck].RewardEffectTime = now
  80. // }
  81. //
  82. // if isSave {
  83. // marshal, err := json.Marshal(bonusProperties)
  84. // if err != nil {
  85. // panic(err)
  86. // }
  87. //
  88. // _, err = query.Use(config.GDBGroup[DB]).ZoneActivity.Where(c.Playerid.Eq(result.Playerid)).Updates(&model.ZoneActivity{
  89. // BonusProperties: string(marshal),
  90. // })
  91. // if err != nil {
  92. // panic(err)
  93. // }
  94. // }
  95. // }
  96. // return nil
  97. // })
  98. //
  99. //if err != nil {
  100. // logrus.Warnf("MigrateZoneBonus sync err:%+v", err)
  101. // return
  102. //}
  103. logrus.Info("MigrateZoneBonus sync success..")
  104. }