- 新增CamelOilToken和CamelOilCardBinding数据库表,实现Token及卡密绑定记录管理 - 在service层增加Token的创建、查询、更新、删除及分页功能 - 实现卡密与Token绑定的业务逻辑,支持基于Token的卡密管理 - 在API层新增Token和卡密绑定相关接口:创建Token、获取Token详情、删除Token、列出Token及根据Token查询绑定卡密 - camel_oil_api新增绑卡接口,支持绑卡状态分类及错误处理 - 在定时任务中增加卡密绑定任务,实现自动处理已支付订单的卡密绑定 - 优化订单提交及支付流程,包含日志调整和请求参数随机扰动 - 统一调整camel_oil模块多控制器实现,完成账号状态查询及订单相关接口实现 - 注册更多camel_oil定时任务,包括订单支付检查、账号日重置和待回调订单处理任务
101 lines
3.7 KiB
Go
101 lines
3.7 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) {
|
||
//registerMainTasks(ctx)
|
||
|
||
// 骆驼加油模块定时任务
|
||
registerCamelOilTasks(ctx)
|
||
}
|
||
|
||
func registerMainTasks(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 注册骆驼加油模块的定时任务
|
||
func registerCamelOilTasks(ctx context.Context) {
|
||
_, _ = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
||
_ = service.CamelOil().CronAccountPrefetchTask(ctx)
|
||
}, "CamelOilAccountPrefetch")
|
||
|
||
_, _ = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
||
_ = service.CamelOil().CronVerifyCodeCheckTask(ctx)
|
||
}, "CamelOilAccountVerifyCodeCheck")
|
||
|
||
_, _ = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
||
_ = service.CamelOil().CronOrderPaymentCheckTask(ctx)
|
||
}, "CamelOilOrderPaymentCheck")
|
||
|
||
_, _ = gcron.AddSingleton(ctx, "0 1 0 * * ?", func(ctx context.Context) {
|
||
_ = service.CamelOil().CronAccountDailyResetTask(ctx)
|
||
}, "CamelOilAccountDailyReset")
|
||
|
||
_, _ = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
||
_ = service.CamelOil().ProcessPendingCallbacks(ctx)
|
||
}, "CamelOilProcessPendingCallbacks")
|
||
|
||
glog.Info(ctx, "骆驼加油模块定时任务注册完成")
|
||
}
|