event_log.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. case msg.EventTypeGuide:
  22. case msg.EventTypeOnlineDuration:
  23. default:
  24. return &msg.EventLogResp{
  25. Code: 1,
  26. Msg: "event type not support",
  27. }
  28. }
  29. if err != nil {
  30. return &msg.EventLogResp{
  31. Code: 1,
  32. Msg: err.Error(),
  33. }
  34. }
  35. return &msg.EventLogResp{
  36. Code: 0,
  37. Msg: "success",
  38. }
  39. }
  40. func (s *EventLogService) eventLog(req *msg.EventLogReq) error {
  41. now := time.Now()
  42. data := &model.LoginLog{
  43. PlayerID: req.PlayerId,
  44. EventType: req.SubType,
  45. Duration: req.Duration,
  46. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  47. EventID: req.EventId,
  48. EventTime: now,
  49. EventDay: now,
  50. Channel: req.Channel,
  51. }
  52. batchtask.Batch.Push(data.TableName(), data)
  53. return nil
  54. }
  55. func (s *EventLogService) adLog(req *msg.EventLogReq) error {
  56. now := time.Now()
  57. data := &model.AdLog{
  58. AdID: req.AdId,
  59. PlayerID: req.PlayerId,
  60. Status: req.Status,
  61. Channel: req.Channel,
  62. IsNew: s.isNewPlayer(req.PlayerCreateTime),
  63. EventTime: now,
  64. EventDay: now,
  65. }
  66. batchtask.Batch.Push(data.TableName(), data)
  67. return nil
  68. }
  69. func (s *EventLogService) isNewPlayer(createTime int64) int64 {
  70. if timext.IsSameDateByTs(createTime, time.Now().Unix()) {
  71. return 1
  72. }
  73. return 0
  74. }