repay38.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package jobs
  2. /*import (
  3. "encoding/json"
  4. "gadmin/config"
  5. "gadmin/internal/gorm/model"
  6. "gadmin/internal/gorm/query"
  7. "github.com/sirupsen/logrus"
  8. model2 "leafstalk/covenant/model"
  9. "sync"
  10. "time"
  11. )
  12. type Rank38 struct {
  13. Min int64 `json:"rankingUpperLimit"`
  14. Max int64 `json:"rankingLowerLimit"`
  15. Reward [][]int64 `json:"reward"`
  16. }
  17. var (
  18. Repay38 = new(jRepay38)
  19. Rank38Json = `[{"rankingUpperLimit":1,"rankingLowerLimit":1,"reward":[[1017,25],[1014,25],[6011,50],[6013,50],[1001,5000000]]},{"rankingUpperLimit":2,"rankingLowerLimit":2,"reward":[[1017,20],[1014,20],[6011,35],[6013,35],[1001,4500000]]},{"rankingUpperLimit":3,"rankingLowerLimit":3,"reward":[[1017,15],[1014,15],[6011,20],[6013,20],[1001,4000000]]},{"rankingUpperLimit":4,"rankingLowerLimit":6,"reward":[[1017,10],[1014,10],[6011,13],[6013,13],[1001,3500000]]},{"rankingUpperLimit":7,"rankingLowerLimit":10,"reward":[[1017,5],[1014,5],[6011,8],[6013,8],[1001,3000000]]},{"rankingUpperLimit":11,"rankingLowerLimit":50,"reward":[[1017,3],[1014,3],[6011,5],[6013,5],[1001,2500000]]},{"rankingUpperLimit":51,"rankingLowerLimit":200,"reward":[[1017,2],[1014,2],[6011,3],[6013,3],[1001,2000000]]},{"rankingUpperLimit":201,"rankingLowerLimit":500,"reward":[[1017,1],[1014,1],[6011,2],[6013,2],[1001,1500000]]},{"rankingUpperLimit":501,"rankingLowerLimit":1000,"reward":[[1015,5],[1013,5],[6011,1],[6013,1],[1001,1000000]]},{"rankingUpperLimit":1001,"rankingLowerLimit":30000,"reward":[[1015,1],[1012,5],[1001,500000]]}]`
  20. allPrayRankReward []*Rank38
  21. )
  22. type jRepay38 struct {
  23. sync.RWMutex
  24. }
  25. func (j *jRepay38) Run() {
  26. logrus.Info("jRepay38 Run.....")
  27. j.handle()
  28. }
  29. func (j *jRepay38) ExtractMaterials(lst [][]int64) (dms []*model2.DropMaterial) {
  30. for _, v := range lst {
  31. dm := &model2.DropMaterial{
  32. ID: v[0],
  33. Count: int(v[1]),
  34. }
  35. dms = append(dms, dm)
  36. }
  37. return
  38. }
  39. func (j *jRepay38) FindLady38RankPrize(rank int64) ([]*model2.DropMaterial, []int64) {
  40. for _, v := range allPrayRankReward {
  41. if rank >= v.Min && rank <= v.Max {
  42. ms := j.ExtractMaterials(v.Reward)
  43. return ms, nil
  44. }
  45. }
  46. return nil, nil
  47. }
  48. func (j *jRepay38) FindLady38RankLevel(playerId int32) int {
  49. for _, v := range allLevel38 {
  50. if v.PlayerId == playerId {
  51. return v.ExtraInfo.Level
  52. }
  53. }
  54. return 0
  55. }
  56. func (j *jRepay38) handle() {
  57. j.RLock()
  58. defer j.RUnlock()
  59. err := json.Unmarshal([]byte(Rank38Json), &allPrayRankReward)
  60. if err != nil {
  61. logrus.Panicf("Unmarshal Rank38Json err:%+v", err)
  62. return
  63. }
  64. if err := json.Unmarshal([]byte(Level38Json), &allLevel38); err != nil {
  65. logrus.Panicf("Unmarshal Level38Json err:%+v", err)
  66. return
  67. }
  68. //logrus.Infof("allLevel38:%+v", allLevel38)
  69. //return
  70. var (
  71. u = query.Use(config.DB).Lady38rank2
  72. whitelist = map[int64]struct{}{
  73. 10: {},
  74. 11: {},
  75. 24: {},
  76. 40: {},
  77. }
  78. )
  79. type ExtraData struct {
  80. Materials []*model2.DropMaterial `json:"materials"`
  81. Equips []int64 `json:"equips"`
  82. }
  83. lists, err := u.Limit(10000).Find()
  84. if err != nil {
  85. logrus.Panicf("jRepay38 Find err:%+v", err)
  86. return
  87. }
  88. for _, item := range lists {
  89. logrus.Warningf("item:%+v", item)
  90. // 50名之前,没发的补发,已发的不再发。
  91. // 51名和之后,不管发没发,都补发。
  92. if item.Mingci <= 50 {
  93. _, ok := whitelist[item.Mingci]
  94. if !ok {
  95. continue
  96. }
  97. }
  98. if 2514575 == item.ID {
  99. continue
  100. }
  101. ms, es := j.FindLady38RankPrize(item.Mingci)
  102. if ms != nil || es != nil {
  103. var l = query.Use(config.GDB1).PlayerLetter
  104. letter := model.PlayerLetter{
  105. PlayerID: int64(item.ID),
  106. Type: 19, //女神驾到排行
  107. ExpireTime: time.Now().Add(time.Hour * 24 * 7),
  108. CreateTime: time.Now(),
  109. DisplayTime: time.Now(),
  110. }
  111. var em ExtraData
  112. em.Materials = append(em.Materials, ms...)
  113. em.Equips = es
  114. emb, err := json.Marshal(&em)
  115. if err != nil {
  116. logrus.Panicf("Repay38Items Materials marshal error. %v, error: %v", em, err)
  117. }
  118. letter.Extra = string(emb)
  119. //level := j.FindLady38RankLevel(item.ID)
  120. //if level == 0 {
  121. // logrus.Panicf("FindLady38RankLevel = 0 item.ID: %v", item.ID)
  122. //}
  123. extra := make(map[string]interface{})
  124. extra["level"] = item.Score
  125. extra["rank"] = item.Mingci
  126. jex, err := json.Marshal(&extra)
  127. if err != nil {
  128. logrus.Panicf("Repay38Items LetterExtraRank marshal error. %v, error: %v", extra, err)
  129. }
  130. letter.ExtraInfo = string(jex)
  131. if err = l.Create(&letter); err != nil {
  132. logrus.Panicf("addLetter Create err :%+v, letter:%+v", err, letter)
  133. //return err
  134. }
  135. //letter := new(model.Letter)
  136. //letter.PlayerId = item.PlayerID
  137. //letter.Type = t.MailType
  138. //letter.Extra.Materials = ms
  139. //letter.Extra.Equips = es
  140. //letter.ExpireTime = expTime
  141. //extra := model.LetterExtraInfo{
  142. // Level: item.Level,
  143. // Rank: item.Rank,
  144. //}
  145. //jex, err := json.Marshal(&extra)
  146. //if err != nil {
  147. // log.WithField("from", t.Name).Errorf("SendRankPrizeByTimer LetterExtraRank marshal error. %v, error: %v", extra, err)
  148. // continue
  149. //}
  150. //letter.ExtraInfo = string(jex)
  151. //letterLst = append(letterLst, letter)
  152. }
  153. }
  154. logrus.Infof("Repay38 ok!!")
  155. }*/