main.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package main
  2. import (
  3. "context"
  4. _ "github.com/gogf/gf/contrib/drivers/clickhouse/v2"
  5. _ "github.com/gogf/gf/contrib/drivers/mysql/v2"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/os/gcron"
  8. "github.com/gogf/gf/v2/os/gctx"
  9. "time"
  10. "workTasks/userSign/userAnalysis"
  11. "workTasks/userSign/userTag"
  12. )
  13. func main() {
  14. ctx := gctx.New()
  15. if g.Cfg().MustGet(ctx, "run", false).Bool() {
  16. runOnce(context.TODO())
  17. if e := userTag.BaseUserTag(); e != nil {
  18. g.Log().Errorf(ctx, "BaseUserTag 异常 %v", e)
  19. }
  20. g.Dump("run once FINISH")
  21. }
  22. _, err := gcron.Add(gctx.New(), g.Cfg().MustGet(ctx, "runCron", "# 0 2 * * *").String(), func(ctx context.Context) {
  23. runOnce(context.TODO())
  24. if e := userTag.BaseUserTag(); e != nil {
  25. g.Log().Errorf(ctx, "BaseUserTag 异常 %v", e)
  26. }
  27. }, "userSign")
  28. if err != nil {
  29. panic(err)
  30. }
  31. select {}
  32. }
  33. func runOnce(ctx context.Context) {
  34. manager := userAnalysis.NewManager()
  35. var allRes []*userAnalysis.AnalysisRes
  36. if err := manager.LoadMapping(); err != nil {
  37. g.Log().Errorf(ctx, "加载对应关系异常 %v", err)
  38. }
  39. var (
  40. now = time.Now()
  41. nowTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
  42. )
  43. //更新全量用户
  44. if len(manager.FullBaseUserId) > 0 {
  45. allRes = append(allRes, &userAnalysis.AnalysisRes{Name: "全量用户BaseUserId", Code: "fullBaseUserId", Data: manager.FullBaseUserId})
  46. }
  47. //订单分析
  48. if res, err := manager.TiDBOrderRange(ctx, nowTime); err == nil && len(res) > 0 {
  49. allRes = append(allRes, res...)
  50. }
  51. //加载30天内取关用户
  52. manager.GetMgoUnSubUser(ctx, -30)
  53. //会员状态分析
  54. if res, err := manager.GetMgoUserRes(ctx); err == nil && len(res) > 0 {
  55. allRes = append(allRes, res...)
  56. }
  57. // 日志标签
  58. g.Log().Infof(ctx, "日志标签")
  59. logRes, logErr := manager.GetAnalysisLogRes(ctx, nowTime)
  60. if logErr != nil {
  61. g.Log().Errorf(ctx, "日志标签异常%v", logErr)
  62. }
  63. for _, re := range logRes {
  64. allRes = append(allRes, re)
  65. }
  66. // 后端接口日志分析
  67. g.Log().Infof(ctx, "后端接口日志分析")
  68. backLogsRes, backLogsErr := manager.GetBackLogsTagsData(ctx, nowTime)
  69. if backLogsErr != nil {
  70. g.Log().Errorf(ctx, "接口请求日志分析异常%v", backLogsErr)
  71. }
  72. for _, re := range backLogsRes {
  73. allRes = append(allRes, re)
  74. }
  75. // 电销标签
  76. g.Log().Infof(ctx, "电销标签")
  77. telemarketingRes, telemarketingErr := manager.GetTelemarketingRes(ctx, nowTime)
  78. if telemarketingErr != nil {
  79. g.Log().Errorf(ctx, "电销标签异常%v", telemarketingErr)
  80. }
  81. for _, re := range telemarketingRes {
  82. allRes = append(allRes, re)
  83. }
  84. // 埋点数据分析
  85. g.Log().Infof(ctx, "埋点数据分析")
  86. buryPointRes, buryPointErr := manager.GetBuryPointRes(ctx, nowTime)
  87. if buryPointErr != nil {
  88. g.Log().Errorf(ctx, "埋点数据分析异常%v", buryPointErr)
  89. }
  90. for _, re := range buryPointRes {
  91. allRes = append(allRes, re)
  92. }
  93. // 留资数据
  94. g.Log().Infof(ctx, "留资数据")
  95. saleLeadsRes, saleLeadsErr := manager.GetSaleLeadsData(ctx, nowTime)
  96. if saleLeadsErr != nil {
  97. g.Log().Errorf(ctx, "留资数据分析异常%v", saleLeadsErr)
  98. }
  99. for _, re := range saleLeadsRes {
  100. allRes = append(allRes, re)
  101. }
  102. // 更新标签
  103. for _, re := range allRes {
  104. re.UpdateTag(ctx)
  105. }
  106. }