package main import ( "context" "fmt" _ "github.com/gogf/gf/contrib/drivers/clickhouse/v2" _ "github.com/gogf/gf/contrib/drivers/mysql/v2" "github.com/gogf/gf/v2/frame/g" "time" "workTasks/userSign/userAnalysis" ) func main() { runOnce(context.TODO()) } func runOnce(ctx context.Context) { manager := userAnalysis.NewManager() var allRes []*userAnalysis.AnalysisRes if err := manager.LoadMapping(); err != nil { g.Log().Errorf(ctx, "加载对应关系异常 %v", err) } //订单分析 if res, err := manager.TiDBOrderRange(ctx); err == nil && len(res) > 0 { allRes = append(allRes, res...) } //会员状态分析 if res, err := manager.GetMgoUserRes(ctx); err == nil && len(res) > 0 { allRes = append(allRes, res...) } var ( sourceArr = []string{"pc", "wx", "app"} nowTime = time.Now() unActiveTime = []int{30, 90} ) //活跃用户分析 for _, source := range sourceArr { if res, err := manager.ActiveUserLoad(ctx, nowTime.AddDate(0, 0, -30), source); err == nil && len(res) > 0 { allRes = append(allRes, &userAnalysis.AnalysisRes{Name: fmt.Sprintf("30天%s活跃用户", source), Code: fmt.Sprintf("active_%s_%d", source, 30), Data: res}) } } //未活跃用户占比 for _, day := range unActiveTime { if res, err := manager.UnActiveUserLoad(ctx, nowTime.AddDate(0, 0, -day)); err == nil && len(res) > 0 { allRes = append(allRes, &userAnalysis.AnalysisRes{Name: fmt.Sprintf("%d天未活跃用户", day), Code: fmt.Sprintf("unActive_%d", day), Data: res}) } } for _, re := range allRes { re.UpdateTag(ctx) } }