jobLogsAnalysis.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package userAnalysis
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/util/gconv"
  6. "time"
  7. )
  8. var (
  9. ctx = context.TODO()
  10. ActiveCodeMap map[string]interface{}
  11. )
  12. func init() {
  13. ActiveCodeMap = g.Cfg().MustGet(ctx, "activeCode.pcCode").Map()
  14. }
  15. // ActiveUserLoad 活跃用户
  16. func (ua *UserAnalysis) ActiveUserLoad(ctx context.Context, start time.Time, source string) (map[BaseUserId]bool, error) {
  17. var (
  18. execSql = "SELECT DISTINCT(baseUserId) as baseUserId FROM user_log_byHour WHERE create_time > ? "
  19. values = []interface{}{start.Format(time.DateTime)}
  20. )
  21. if source == "wx" || source == "pc" || source == "app" {
  22. execSql += " AND s_source =? "
  23. values = append(values, source)
  24. }
  25. rPc, err := g.DB().Query(ctx, execSql, values...)
  26. if err != nil {
  27. return nil, err
  28. }
  29. activeUser := map[BaseUserId]bool{}
  30. for _, m := range rPc.List() {
  31. // 插入pc30天活跃用户
  32. activeUser[BaseUserId(gconv.Int64(m["baseUserId"]))] = true
  33. }
  34. return activeUser, nil
  35. }
  36. // UnActiveUserLoad 未活跃用户
  37. func (ua *UserAnalysis) UnActiveUserLoad(ctx context.Context, start time.Time) (map[BaseUserId]bool, error) {
  38. rPc, err := g.DB().Query(ctx, `SELECT DISTINCT(dmp.baseUserId) as baseUserId1 FROM dwd_mgo_position dmp
  39. left join ( SELECT DISTINCT(baseUserId) as baseUserId
  40. FROM user_log_byHour ulbh
  41. WHERE create_time > ? ) ulog on dmp.baseUserId =ulog.baseUserId where ulog.baseUserId=0`, start.Format(time.DateTime))
  42. if err != nil {
  43. return nil, err
  44. }
  45. unActiveUser := map[BaseUserId]bool{}
  46. for _, m := range rPc.List() {
  47. // 插入pc30天活跃用户
  48. unActiveUser[BaseUserId(gconv.Int64(m["baseUserId1"]))] = true
  49. }
  50. return unActiveUser, nil
  51. }