2026-04-07 09:51:32 +08:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-04-08 09:03:20 +08:00
|
|
|
|
"context"
|
2026-04-07 09:51:32 +08:00
|
|
|
|
"fmt"
|
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
"cid/sync"
|
|
|
|
|
|
|
2026-04-08 09:03:20 +08:00
|
|
|
|
"gitea.com/red-future/common/beans"
|
2026-04-07 09:51:32 +08:00
|
|
|
|
_ "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()
|
2026-04-08 09:03:20 +08:00
|
|
|
|
ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin"})
|
2026-04-08 14:05:15 +08:00
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
2026-04-08 09:03:20 +08:00
|
|
|
|
req := &sync.AccountReportRequest{
|
2026-04-07 09:51:32 +08:00
|
|
|
|
AdvertiserID: 10001,
|
2026-04-08 14:05:15 +08:00
|
|
|
|
StartTime: lastHourStart.UnixMilli(),
|
|
|
|
|
|
EndTime: lastHourEnd.UnixMilli(),
|
2026-04-07 09:51:32 +08:00
|
|
|
|
SelectColumns: []string{"impression", "click", "cost", "t0GMV"},
|
|
|
|
|
|
GroupType: 1,
|
|
|
|
|
|
QueryVersion: 1,
|
2026-04-08 16:00:54 +08:00
|
|
|
|
PageInfo: &sync.PageInfo{
|
|
|
|
|
|
CurrentPage: 1,
|
|
|
|
|
|
PageSize: 10,
|
|
|
|
|
|
},
|
2026-04-07 09:51:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-08 16:00:54 +08:00
|
|
|
|
config := sync.ConcurrentSyncConfig{
|
|
|
|
|
|
MaxConcurrency: 5,
|
|
|
|
|
|
UseMock: true,
|
|
|
|
|
|
MaxRetries: 3,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
logrus.Infof("=== 开始执行定时同步任务(并发模式)===")
|
2026-04-08 14:05:15 +08:00
|
|
|
|
logrus.Infof("时间区间:%s ~ %s", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05"))
|
2026-04-08 16:00:54 +08:00
|
|
|
|
logrus.Infof("分页配置:每页大小=%d", req.PageInfo.PageSize)
|
|
|
|
|
|
logrus.Infof("并发配置:最大并发数=%d, 最大重试次数=%d", config.MaxConcurrency, config.MaxRetries)
|
2026-04-08 14:05:15 +08:00
|
|
|
|
|
2026-04-08 16:00:54 +08:00
|
|
|
|
result, err := syncService.SyncAccountReportConcurrent(ctx, req, config)
|
2026-04-07 09:51:32 +08:00
|
|
|
|
if err != nil {
|
2026-04-08 14:05:15 +08:00
|
|
|
|
logrus.Errorf("定时同步任务执行完成,存在失败的页面")
|
|
|
|
|
|
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)
|
|
|
|
|
|
logrus.Infof("失败的页面已记录到 sync_task_log 表,等待补偿调度器处理")
|
|
|
|
|
|
|
|
|
|
|
|
for _, pageResult := range result.PageResults {
|
|
|
|
|
|
if !pageResult.Success {
|
|
|
|
|
|
logrus.Warnf(" - 第 %d 页失败,任务日志ID=%d,错误:%s",
|
|
|
|
|
|
pageResult.PageNumber, pageResult.PageTaskLogID, pageResult.ErrorMessage)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-04-07 09:51:32 +08:00
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fmt.Printf("✓ 定时同步完成:\n")
|
2026-04-08 14:05:15 +08:00
|
|
|
|
fmt.Printf(" 时间区间:%s ~ %s\n", lastHourStart.Format("2006-01-02 15:04:05"), lastHourEnd.Format("2006-01-02 15:04:05"))
|
2026-04-07 09:51:32 +08:00
|
|
|
|
fmt.Printf(" 汇总数据:成功=%v, ID=%d\n", result.SumSuccess, result.SumID)
|
2026-04-08 09:03:20 +08:00
|
|
|
|
fmt.Printf(" 明细数据:总记录数=%d, 成功页数=%d, 失败页数=%d\n",
|
2026-04-07 09:51:32 +08:00
|
|
|
|
result.DetailCount, result.DetailSuccessCount, result.DetailFailCount)
|
2026-04-08 14:05:15 +08:00
|
|
|
|
fmt.Printf(" 主任务日志ID:%d\n", result.TaskLogID)
|
|
|
|
|
|
|
|
|
|
|
|
if len(result.PageResults) > 0 {
|
|
|
|
|
|
fmt.Printf(" 分页任务详情:\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)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-04-07 09:51:32 +08:00
|
|
|
|
}
|