- 实现账号增删改查接口和逻辑 - 支持账号状态更新及状态历史记录功能 - 提供账号列表、历史和统计信息查询API - 实现账号轮询机制,支持按使用时间轮询获取账号 - 增加账号登录流程及批量登录功能,集成接码平台和平台API - 管理账号订单容量,支持容量检查与账号登录触发 - 提供账号池状态统计接口 - 账号历史记录查询支持多种变更类型文本展示 - 密码等敏感信息采用脱敏展示 - 完善日志记录和错误处理机制,保证业务稳定运行
96 lines
3.6 KiB
Go
96 lines
3.6 KiB
Go
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, "骆驼加油模块定时任务注册完成")
|
||
}
|