Files
kra-new/internal/worker/business_report_tasks.go
T

44 lines
1.7 KiB
Go

package worker
import (
"context"
"encoding/json"
"fmt"
"kra/internal/biz/business"
platformtask "kra/pkg/task"
)
// 只注册旧执行器对应方法,不创建或启用计划;迁移库保留原参数与禁用状态。
func (methods *TaskMethods) registerBusinessReports(registry *platformtask.Registry) {
for _, job := range []struct {
name, description, period string
kind business.ReportBuildKind
}{
{"swReportDayTodayTask", "重建当日商务日汇总", "today", business.DailyReport},
{"swReportDayYesterdayTask", "重建昨日商务日汇总", "yesterday", business.DailyReport},
{"swReportDayBackfillTask", "按日期区间重建商务日汇总", "backfill", business.DailyReport},
{"swReportServerDayTodayTask", "重建当日区服日汇总", "today", business.ServerReport},
{"swReportServerDayYesterdayTask", "重建昨日区服日汇总", "yesterday", business.ServerReport},
{"swReportServerDayBackfillTask", "按日期区间重建区服日汇总", "backfill", business.ServerReport},
} {
registry.Register(platformtask.Method{Name: job.name, Description: job.description, Run: func(ctx context.Context, params json.RawMessage) error {
if methods.reports == nil {
return fmt.Errorf("商务汇总任务依赖未就绪")
}
if ctx == nil {
ctx = context.Background()
}
var args struct {
StartDate string `json:"startDate"`
EndDate string `json:"endDate"`
}
if job.period == "backfill" && len(params) > 0 {
if err := json.Unmarshal(params, &args); err != nil {
return fmt.Errorf("日期回跑参数必须是 JSON 对象: %w", err)
}
}
return methods.reports.Run(ctx, job.kind, job.period, args.StartDate, args.EndDate)
}})
}
}