report_day_basic.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package service
  2. import (
  3. "gadmin/config"
  4. "gadmin/internal/admin/consts"
  5. "gadmin/internal/gorm/query"
  6. "github.com/sirupsen/logrus"
  7. )
  8. // DayBasic 每日用户统计
  9. var DayBasic = new(sDayBasic)
  10. type sDayBasic struct{}
  11. // GetPlayerCount 获取指定渠道玩家数量统计
  12. func (s *sDayBasic) GetPlayerCount(serverId int, date, channelId string, flag int32, typ string) int64 {
  13. rdb := query.Use(config.DB).ReportDayBasic
  14. m := rdb.Select(rdb.ALL,
  15. rdb.OldCount.Sum().As("old_count"),
  16. rdb.NewCount.Sum().As("new_count"),
  17. rdb.ValidCount.Sum().As("valid_count"),
  18. rdb.ActiveCount.Sum().As("active_count"),
  19. ).Where(rdb.Date.Eq(date))
  20. if flag > -1 {
  21. m = m.Where(rdb.Flag.Eq(flag))
  22. }
  23. switch channelId {
  24. case consts.ChannelIdNone:
  25. // 不选择渠道
  26. case consts.ChannelIdAllAdv, consts.ChannelIdAllWx, consts.ChannelIdAllTT:
  27. // 所有的广告渠道
  28. m = m.Where(rdb.ChannelID.In(Channel.GetIdsByType(channelId)...))
  29. default:
  30. // 指定渠道
  31. m = m.Where(rdb.ChannelID.Eq(channelId))
  32. }
  33. if serverId > 0 {
  34. m = m.Where(rdb.ServerID.Eq(int32(serverId)))
  35. }
  36. result, err := m.First()
  37. if err != nil {
  38. logrus.Warnf("service GetPlayerCount err:%+v", err)
  39. return 0
  40. }
  41. switch typ {
  42. case "new_count":
  43. return result.NewCount
  44. case "old_count":
  45. return result.OldCount
  46. case "valid_count":
  47. return result.ValidCount
  48. case "active_count":
  49. return result.ActiveCount
  50. default:
  51. return 0
  52. }
  53. }