main.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "time"
  7. "workTasks/userSign/userAnalysis"
  8. )
  9. func main() {
  10. runOnce(context.TODO())
  11. }
  12. func runOnce(ctx context.Context) {
  13. manager := userAnalysis.NewManager()
  14. if err := manager.LoadMapping(); err != nil {
  15. g.Log().Errorf(ctx, "加载对应关系异常 %v", err)
  16. }
  17. var allRes []*userAnalysis.AnalysisRes
  18. //订单分析
  19. if res, err := manager.TiDBOrderRange(ctx); err == nil && len(res) > 0 {
  20. allRes = append(allRes, res...)
  21. }
  22. //会员状态分析
  23. if res, err := manager.GetMgoUserRes(ctx); err == nil && len(res) > 0 {
  24. allRes = append(allRes, res...)
  25. }
  26. var (
  27. sourceArr = []string{"pc", "wx", "app"}
  28. nowTime = time.Now()
  29. unActiveTime = []int{30, 90}
  30. )
  31. //活跃用户分析
  32. for _, source := range sourceArr {
  33. if res, err := manager.ActiveUserLoad(ctx, nowTime.AddDate(0, 0, -30), source); err == nil && len(res) > 0 {
  34. allRes = append(allRes, &userAnalysis.AnalysisRes{Name: fmt.Sprintf("30天%s活跃用户", source), Code: fmt.Sprintf("active_%s_%d", source, 30), Data: res})
  35. }
  36. }
  37. //未活跃用户占比
  38. for _, day := range unActiveTime {
  39. if res, err := manager.UnActiveUserLoad(ctx, nowTime.AddDate(0, 0, -day)); err == nil && len(res) > 0 {
  40. allRes = append(allRes, &userAnalysis.AnalysisRes{Name: fmt.Sprintf("%d天未活跃用户", day), Code: "unActive_%d", Data: res})
  41. }
  42. }
  43. for _, re := range allRes {
  44. re.Save(ctx)
  45. }
  46. }