Files
kami_backend/utility/cron/cron.go
danial 15e2426e85 feat(camel_oil): 新增骆驼加油账号管理模块
- 实现账号增删改查接口和逻辑
- 支持账号状态更新及状态历史记录功能
- 提供账号列表、历史和统计信息查询API
- 实现账号轮询机制,支持按使用时间轮询获取账号
- 增加账号登录流程及批量登录功能,集成接码平台和平台API
- 管理账号订单容量,支持容量检查与账号登录触发
- 提供账号池状态统计接口
- 账号历史记录查询支持多种变更类型文本展示
- 密码等敏感信息采用脱敏展示
- 完善日志记录和错误处理机制,保证业务稳定运行
2025-11-21 00:49:50 +08:00

96 lines
3.6 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 cron
import (
"context"
"kami/internal/service"
"github.com/gogf/gf/v2/net/gtrace"
"github.com/gogf/gf/v2/os/gcron"
"github.com/gogf/gf/v2/os/glog"
"go.opentelemetry.io/otel/trace"
)
// Register 注册定时任务
func Register(ctx context.Context) {
//每日0时执行
_, _ = gcron.AddSingleton(ctx, "0 0 0 * * ?", func(ctx context.Context) {
tracer := gtrace.NewTracer("每日0时定时任务")
ctx, span := tracer.Start(ctx, "每日0时定时任务", trace.WithNewRoot())
defer span.End()
glog.Info(ctx, "每日0时执行重置苹果账户状态")
if err := service.AppleAccount().ResetStatus(ctx, nil); err != nil {
glog.Error(ctx, "重置苹果账户状态失败", err)
}
glog.Info(ctx, "每日0时执行重置充值账户状态")
if err := service.CardRedeemAccount().ResetTodayAmountTotal(ctx); err != nil {
glog.Error(ctx, "重置充值账户状态", err)
}
glog.Info(ctx, "每日0时执行每日账户充值统计")
if err := service.CardRedeemAccount().DailySummary(ctx); err != nil {
glog.Error(ctx, "每日账户充值统计失败", err)
}
})
_, _ = gcron.AddSingleton(ctx, "@every 10m", func(ctx context.Context) {
//处理正在等待充值的订单
_ = service.AppleOrder().HandleWaitingList(ctx)
//处理临时停止的订单
_ = service.AppleAccount().HandleTmpStoppedList(ctx)
//if err := tmall.NewClient().CronAuthTask(ctx); err != nil {
// glog.Error(ctx, "遍历天猫授权失败", err)
//}
})
//_, _ = gcron.AddSingleton(ctx, "@every 3m", func(ctx context.Context) {
// //处理大多数轮询订单
// _ = service.CardRedeemOrder().TriggerConsumeWithContext(ctx)
// _ = service.CardRedeemAccount().CheckAccountStatus(ctx, consts.CardRedeemAccountCategoryWalMart)
//})
_, _ = gcron.AddSingleton(ctx, "@every 5s", func(ctx context.Context) {
_ = service.CardRedeemOrder().TriggerConsumeWithContext(ctx)
//service.CardRedeemCookie().CheckPaySuccess(ctx, nil)
})
// 京东支付状态监控任务每10s执行一次
_, _ = gcron.AddSingleton(ctx, "@every 30s", func(ctx context.Context) {
tracer := gtrace.NewTracer("京东支付状态监控任务")
ctx, span := tracer.Start(ctx, "京东支付状态监控任务", trace.WithNewRoot())
defer span.End()
if err := service.JdCookie().ReleaseExpiredJdOrders(ctx); err != nil {
glog.Error(ctx, "释放过期京东订单失败", err)
}
if err := service.JdCookie().CleanupExpiredOrders(ctx); err != nil {
glog.Error(ctx, "清理过期订单失败", err)
}
if err := service.JdCookie().BatchCheckPaymentStatus(ctx); err != nil {
glog.Error(ctx, "京东支付状态监控任务失败", err)
}
})
// 骆驼加油模块定时任务
//registerCamelOilTasks(ctx)
}
// registerCamelOilTasks 注册骆驼加油模块的定时任务
func registerCamelOilTasks(ctx context.Context) {
// 账号登录任务 - 每5分钟执行
_, _ = gcron.AddSingleton(ctx, "@every 5m", func(ctx context.Context) {
_ = service.CamelOil().CronAccountLoginTask(ctx)
}, "CamelOilAccountLogin")
_, _ = gcron.AddSingleton(ctx, "@every 5s", func(ctx context.Context) {
_ = service.CamelOil().CronVerifyCodeCheckTask(ctx)
}, "CamelOilVerifyCodeCheck")
// 订单支付状态检测任务 - 每1分钟执行
_, _ = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
_ = service.CamelOil().CronOrderPaymentCheckTask(ctx)
}, "CamelOilOrderPaymentCheck")
// 账号日重置任务 - 每日00:00执行
_, _ = gcron.AddSingleton(ctx, "0 0 * * *", func(ctx context.Context) {
_ = service.CamelOil().CronAccountDailyResetTask(ctx)
}, "CamelOilAccountDailyReset")
glog.Info(ctx, "骆驼加油模块定时任务注册完成")
}