package main import ( "context" _ "github.com/gogf/gf/contrib/drivers/clickhouse/v2" _ "github.com/gogf/gf/contrib/drivers/mysql/v2" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gcron" "github.com/gogf/gf/v2/os/gctx" "time" "workTasks/userSign/userAnalysis" "workTasks/userSign/userTag" ) func main() { ctx := gctx.New() if g.Cfg().MustGet(ctx, "run", false).Bool() { runOnce(context.TODO()) if e := userTag.BaseUserTag(); e != nil { g.Log().Errorf(ctx, "BaseUserTag 异常 %v", e) } g.Dump("run once FINISH") } _, err := gcron.Add(gctx.New(), g.Cfg().MustGet(ctx, "runCron", "# 0 2 * * *").String(), func(ctx context.Context) { runOnce(context.TODO()) if e := userTag.BaseUserTag(); e != nil { g.Log().Errorf(ctx, "BaseUserTag 异常 %v", e) } }, "userSign") if err != nil { panic(err) } select {} } func runOnce(ctx context.Context) { manager := userAnalysis.NewManager() var allRes []*userAnalysis.AnalysisRes if err := manager.LoadMapping(); err != nil { g.Log().Errorf(ctx, "加载对应关系异常 %v", err) } var ( now = time.Now() nowTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) ) //更新全量用户 if len(manager.FullBaseUserId) > 0 { allRes = append(allRes, &userAnalysis.AnalysisRes{Name: "全量用户BaseUserId", Code: "fullBaseUserId", Data: manager.FullBaseUserId}) } //订单分析 if res, err := manager.TiDBOrderRange(ctx, nowTime); err == nil && len(res) > 0 { allRes = append(allRes, res...) } //加载30天内取关用户 manager.GetMgoUnSubUser(ctx, -30) //会员状态分析 if res, err := manager.GetMgoUserRes(ctx); err == nil && len(res) > 0 { allRes = append(allRes, res...) } // 日志标签 g.Log().Infof(ctx, "日志标签") logRes, logErr := manager.GetAnalysisLogRes(ctx, nowTime) if logErr != nil { g.Log().Errorf(ctx, "日志标签异常%v", logErr) } for _, re := range logRes { allRes = append(allRes, re) } // 后端接口日志分析 g.Log().Infof(ctx, "后端接口日志分析") backLogsRes, backLogsErr := manager.GetBackLogsTagsData(ctx, nowTime) if backLogsErr != nil { g.Log().Errorf(ctx, "接口请求日志分析异常%v", backLogsErr) } for _, re := range backLogsRes { allRes = append(allRes, re) } // 电销标签 g.Log().Infof(ctx, "电销标签") telemarketingRes, telemarketingErr := manager.GetTelemarketingRes(ctx, nowTime) if telemarketingErr != nil { g.Log().Errorf(ctx, "电销标签异常%v", telemarketingErr) } for _, re := range telemarketingRes { allRes = append(allRes, re) } // 埋点数据分析 g.Log().Infof(ctx, "埋点数据分析") buryPointRes, buryPointErr := manager.GetBuryPointRes(ctx, nowTime) if buryPointErr != nil { g.Log().Errorf(ctx, "埋点数据分析异常%v", buryPointErr) } for _, re := range buryPointRes { allRes = append(allRes, re) } // 留资数据 g.Log().Infof(ctx, "留资数据") saleLeadsRes, saleLeadsErr := manager.GetSaleLeadsData(ctx, nowTime) if saleLeadsErr != nil { g.Log().Errorf(ctx, "留资数据分析异常%v", saleLeadsErr) } for _, re := range saleLeadsRes { allRes = append(allRes, re) } // 更新标签 for _, re := range allRes { re.UpdateTag(ctx) } }