package transfersys import ( "context" "fmt" "strconv" "time" models "com.snow.auto_monitor/app/models/orders" dingServ "com.snow.auto_monitor/app/services/dingding" "github.com/qit-team/snow-core/log/logger" ) func DoRechargeTimeout() { fmt.Println("开始执行周期任务:DoRechargeTimeout") // 创建一个新的Ticker,每分钟触发一次 ticker := time.NewTicker(3 * time.Second) defer ticker.Stop() // 在函数结束时停止Ticker for range ticker.C { res, err := models.GetInstance().GetRechargeTimeoutOrder(10) if err != nil { fmt.Println(err.Error()) continue } for i := 0; i < len(res); i++ { models.GetInstance().Update(&models.Orders{ Id: res[i].Id, FailReason: "超时", }) logger.Info(context.TODO(), "order recharge timeout", "orderId: "+strconv.FormatInt(res[i].Id, 10)) } if len(res) > 0 { dingStr := fmt.Sprintf( ` 系统出现了超时7分钟的订单啦,快去后台查看! - 异常单号: %s; - 充值账号: %s; `, res[0].OutTradeNo, res[0].RechargeAccount, ) err = dingServ.DingSend("订单超时", dingStr, true) fmt.Println(err) } } } func init() { go DoRechargeTimeout() }