Files
data-engine/scheduler/run_account_report_task.go

103 lines
3.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"context"
"fmt"
"time"
"cid/sync"
"gitea.com/red-future/common/beans"
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
"github.com/gogf/gf/v2/os/gctx"
"github.com/sirupsen/logrus"
)
func main() {
ctx := gctx.New()
syncService := sync.NewSyncService()
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
now := time.Now()
lastHourEnd := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
lastHourStart := lastHourEnd.Add(-1 * time.Hour)
req := &sync.AccountReportRequest{
AdvertiserID: 10001,
StartTime: lastHourStart.UnixMilli(),
EndTime: lastHourEnd.UnixMilli(),
SelectColumns: []string{"impression", "click", "cost", "t0GMV"},
GroupType: 1,
QueryVersion: 1,
PageInfo: &sync.PageInfo{
CurrentPage: 1,
PageSize: 10,
},
}
config := sync.ConcurrentSyncConfig{
MaxConcurrency: 5,
UseMock: true,
MaxRetries: 3,
}
logrus.Infof("=== 开始执行定时同步任务(并发模式)===")
logrus.Infof("时间区间:%s ~ %s", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05"))
logrus.Infof("分页配置:每页大小=%d", req.PageInfo.PageSize)
logrus.Infof("并发配置:最大并发数=%d, 最大重试次数=%d", config.MaxConcurrency, config.MaxRetries)
result, err := syncService.SyncAccountReportConcurrent(ctx, req, config)
if err != nil {
logrus.Errorf("定时同步任务执行失败:%v", err)
logrus.Infof("主任务日志ID%d", result.TaskLogID)
return
}
hasFailedPages := result.DetailFailCount > 0
if hasFailedPages {
logrus.Warnf("⚠ 定时同步任务完成,但存在失败的页面")
} else {
logrus.Infof("✓ 定时同步任务全部成功")
}
logrus.Infof("主任务日志ID%d", result.TaskLogID)
logrus.Infof("汇总数据:已保存=%v, ID=%d", result.SumSuccess, result.SumID)
logrus.Infof("明细统计:总记录数=%d, 成功页数=%d, 失败页数=%d",
result.DetailCount, result.DetailSuccessCount, result.DetailFailCount)
if hasFailedPages {
logrus.Warnf("失败的页面已记录到 sync_task_log 表,等待补偿调度器处理")
for _, pageResult := range result.PageResults {
if !pageResult.Success {
logrus.Warnf(" - 第 %d 页失败任务日志ID=%d错误%s",
pageResult.PageNumber, pageResult.PageTaskLogID, pageResult.ErrorMessage)
}
}
}
fmt.Printf("\n=== 同步结果汇总 ===\n")
fmt.Printf("时间区间:%s ~ %s\n", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05"))
fmt.Printf("汇总数据:已保存=%v, ID=%d\n", result.SumSuccess, result.SumID)
fmt.Printf("明细统计:总记录数=%d, 成功页数=%d, 失败页数=%d\n",
result.DetailCount, result.DetailSuccessCount, result.DetailFailCount)
fmt.Printf("主任务日志ID%d\n", result.TaskLogID)
if len(result.PageResults) > 0 {
fmt.Printf("\n分页任务详情\n")
for _, pageResult := range result.PageResults {
status := "✓ 成功"
if !pageResult.Success {
status = fmt.Sprintf("✗ 失败: %s", pageResult.ErrorMessage)
}
fmt.Printf(" - 第 %d 页任务ID=%d, 记录数=%d, 耗时=%dms, 状态=%s\n",
pageResult.PageNumber, pageResult.PageTaskLogID,
pageResult.RecordCount, pageResult.DurationMs, status)
}
}
if hasFailedPages {
fmt.Printf("\n⚠ 警告:存在 %d 个失败的页面,请检查日志并触发补偿任务\n", result.DetailFailCount)
}
}