statistics_dps.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package jobs
  2. /*import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "gadmin/config"
  7. "gadmin/internal/gorm/model"
  8. "gadmin/internal/gorm/query"
  9. "gadmin/package/gmmodule"
  10. "github.com/sirupsen/logrus"
  11. "gorm.io/gorm"
  12. model2 "leafstalk/covenant/model"
  13. )
  14. var StatisticsDPS = new(jStatisticsDPS)
  15. type jStatisticsDPS struct {
  16. }
  17. func (j *jStatisticsDPS) Run() {
  18. logrus.Info("jStatisticsDPS Run.....")
  19. gmmodule.LoadBattleAttr("./resource/public/serverjson/equipBattleAttr.json",
  20. "./resource/public/serverjson/roleBattleAttr.json",
  21. "./resource/public/serverjson/talent.json",
  22. "./resource/public/serverjson/exskill.json",
  23. "./resource/public/serverjson/Skill.json",
  24. )
  25. type UserIdResult struct {
  26. UserId int64
  27. }
  28. var result []int64
  29. var tx *gorm.DB
  30. tx = config.DB.Model(&model.LoginLog{}). //and user_id = 511349
  31. Raw("select user_id from login_logs where event_id = 2 and event_at >= 1661616000 group by user_id having sum(1)>=1").
  32. Scan(&result)
  33. if tx.Error != nil {
  34. logrus.Errorf("select login_logs err: %v", tx.Error)
  35. }
  36. logrus.Warnf("result:%+v", result)
  37. type PlayerDps struct {
  38. Playerid int64
  39. Battle *gmmodule.PlayerBattleAttr
  40. DPS int64
  41. }
  42. var (
  43. o = query.Use(config.GDB1).PlayerAttr
  44. m = o.WithContext(context.TODO())
  45. //allPlayerid = make([]PlayerDps, 0)
  46. ma = query.Use(config.GDB1).PlayerMaterial
  47. )
  48. for _, v := range result {
  49. mod, err := m.Select(o.Playerid, o.Level).Where(o.Playerid.In(v)).First()
  50. if errors.Is(err, gorm.ErrRecordNotFound) {
  51. continue
  52. }
  53. if err != nil {
  54. logrus.Warnf("orderLst Scan err . %v", err)
  55. return
  56. }
  57. if mod.Level >= 12 {
  58. material, err := ma.Where(ma.Playerid.Eq(mod.Playerid)).First()
  59. if errors.Is(err, gorm.ErrRecordNotFound) {
  60. continue
  61. }
  62. if err != nil {
  63. logrus.Warnf("material Scan err . %v", err)
  64. return
  65. }
  66. var (
  67. equipments = make(map[string]model2.DropEquipment)
  68. roles = make([]*model2.DropedRole, 0)
  69. talents = make(map[int]int)
  70. equips = make([]int64, 0)
  71. role int64
  72. allRoles = make([]int64, 0)
  73. )
  74. err = json.Unmarshal([]byte(material.Equipments), &equipments)
  75. if err != nil {
  76. logrus.Warnf("json.Unmarshal Equipments err . %v, material.Equipments:%+v", err, material.Equipments)
  77. continue
  78. }
  79. err = json.Unmarshal([]byte(material.Roles), &roles)
  80. if err != nil {
  81. logrus.Warnf("json.Unmarshal Roles err . %v, material.Roles:%+v", err, material.Roles)
  82. continue
  83. }
  84. err = json.Unmarshal([]byte(material.Talents), &talents)
  85. if err != nil {
  86. logrus.Warnf("json.Unmarshal Talents err . %v, material.Talents:%+v", err, material.Talents)
  87. continue
  88. }
  89. logrus.Warnf("material:%+v", equipments)
  90. var isw bool
  91. //for _, e := range equipments {
  92. // if e.Wear {
  93. // equips = append(equips, e.EID)
  94. //
  95. // eids := fmt.Sprintf("%v", e.EID)
  96. // logrus.Warnf("eids:%v, eids[:1]:%v", eids, eids[:1])
  97. // if eids[:1] == "1" {
  98. // isw = true
  99. // }
  100. // }
  101. //
  102. //}
  103. if len(equips) == 0 {
  104. equips = append(equips, 10001001)
  105. isw = true
  106. }
  107. if !isw {
  108. equips = append(equips, 10001001)
  109. }
  110. for _, r := range roles {
  111. //if r.Wear {
  112. // role = r.ID
  113. //}
  114. allRoles = append(allRoles, r.ID)
  115. }
  116. logrus.Debugf("Playerid:%v,isw:%v, equips:%#v, role:%#v, talents%#v, allRoles%#v", material.Playerid, isw, equips, role, talents, allRoles)
  117. battle := gmmodule.CalcBattleAttr(equips, role, talents, allRoles)
  118. //allPlayerid = append(allPlayerid, PlayerDps{
  119. // Playerid: material.Playerid,
  120. // Battle: battle,
  121. // DPS: int64(battle.Atk * 60 / battle.AtkSpeed),
  122. //})
  123. var (
  124. q = query.Use(config.DB).PlayerDp
  125. models model.PlayerDp
  126. )
  127. if err = q.Where(q.Playerid.Eq(material.Playerid)).Scan(&models); err != nil {
  128. logrus.Warnf("PlayerDp err . %v", err)
  129. return
  130. }
  131. data := model.PlayerDp{
  132. Playerid: material.Playerid,
  133. Dps: int32(float64(battle.Atk*60) / battle.AtkSpeed),
  134. }
  135. if models.ID > 0 {
  136. if _, err := query.Use(config.DB).PlayerDp.Where(q.Playerid.Eq(material.Playerid)).Updates(&data); err != nil {
  137. logrus.Warnf("PlayerDp Updates err . %v", err)
  138. return
  139. }
  140. } else {
  141. err := query.Use(config.DB).PlayerDp.Create(&data)
  142. if err != nil {
  143. logrus.Warnf("PlayerDp Create err . %v", err)
  144. return
  145. }
  146. }
  147. }
  148. }
  149. //logrus.Warnf("allPlayerid:%+v", allPlayerid)
  150. }*/