event_log.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package service
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "sparkteam-dash/internal/http/msg"
  5. "sparkteam-dash/orm/model"
  6. "sparkteam-dash/pkg/batchtask"
  7. "sparkteam-dash/pkg/utils/timext"
  8. "time"
  9. )
  10. var EventLog = &EventLogService{}
  11. type EventLogService struct {
  12. }
  13. func (s *EventLogService) ReportEventLog(ctx *gin.Context, req *msg.EventLogReq) *msg.EventLogResp {
  14. var err error
  15. switch req.EventType {
  16. case msg.EventTypeLogin:
  17. err = s.eventLog(req)
  18. case msg.EventTypeWatchAd:
  19. err = s.adLog(req)
  20. case msg.EventTypeBattle:
  21. err = s.battleLog(req)
  22. case msg.EventTypeGuide:
  23. err = s.guideLog(req)
  24. case msg.EventTypeOnlineDuration:
  25. err = s.onlineDurationLog(req)
  26. default:
  27. return &msg.EventLogResp{
  28. Code: 1,
  29. Msg: "event type not support",
  30. }
  31. }
  32. if err != nil {
  33. return &msg.EventLogResp{
  34. Code: 1,
  35. Msg: err.Error(),
  36. }
  37. }
  38. return &msg.EventLogResp{
  39. Code: 0,
  40. Msg: "success",
  41. }
  42. }
  43. func (s *EventLogService) eventLog(req *msg.EventLogReq) error {
  44. now := time.Now()
  45. data := &model.LoginLog{
  46. PlayerID: req.PlayerId,
  47. EventType: req.SubType,
  48. Duration: int32(req.Duration),
  49. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  50. EventID: req.EventId,
  51. EventTime: now,
  52. EventDay: now,
  53. Channel: req.Channel,
  54. }
  55. batchtask.Batch.Push(data.TableName(), data)
  56. return nil
  57. }
  58. func (s *EventLogService) battleLog(req *msg.EventLogReq) error {
  59. now := time.Now()
  60. data := &model.BattleLog{
  61. ChapterID: int32(req.ChapterId),
  62. Wave: int32(req.Wave),
  63. PlayerID: req.PlayerId,
  64. BattleTime: int32(req.BattleTime),
  65. BattleResult: int32(req.BattleResult),
  66. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  67. EventTime: now,
  68. EventDay: now,
  69. Channel: req.Channel,
  70. IsRevive: int32(req.IsRevive),
  71. ReviveWave: int32(req.ReviveWave),
  72. }
  73. batchtask.Batch.Push(data.TableName(), data)
  74. return nil
  75. }
  76. func (s *EventLogService) guideLog(req *msg.EventLogReq) error {
  77. now := time.Now()
  78. data := &model.GuideLog{
  79. GuideID: int32(req.GuideId),
  80. StepID: int32(req.StepId),
  81. PlayerID: req.PlayerId,
  82. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  83. EventTime: now,
  84. EventDay: now,
  85. Channel: req.Channel,
  86. }
  87. batchtask.Batch.Push(data.TableName(), data)
  88. return nil
  89. }
  90. func (s *EventLogService) onlineDurationLog(req *msg.EventLogReq) error {
  91. now := time.Now()
  92. data := &model.OnlineDurationLog{
  93. PlayerID: req.PlayerId,
  94. LoginAt: req.LoginAt,
  95. LogoutAt: now.Unix(),
  96. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  97. IsValid: int32(req.IsValid),
  98. Channel: req.Channel,
  99. }
  100. batchtask.Batch.Push(data.TableName(), data)
  101. return nil
  102. }
  103. func (s *EventLogService) adLog(req *msg.EventLogReq) error {
  104. now := time.Now()
  105. data := &model.AdLog{
  106. AdID: int32(req.AdId),
  107. PlayerID: req.PlayerId,
  108. Status: int32(req.Status),
  109. Channel: req.Channel,
  110. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  111. EventTime: now,
  112. EventDay: now,
  113. }
  114. batchtask.Batch.Push(data.TableName(), data)
  115. return nil
  116. }
  117. func (s *EventLogService) isNewPlayer(createTime int64) int32 {
  118. if timext.IsSameDateByTs(createTime, time.Now().Unix()) {
  119. return 1
  120. }
  121. return 0
  122. }