12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package schedule
- import (
- "github.com/robfig/cron/v3"
- "github.com/sirupsen/logrus"
- "log"
- "time"
- "youngee_b_api/app/dao"
- "youngee_b_api/app/service"
- )
- func AutoTask2() error {
- // 新建一个定时任务对象
- crontab := cron.New(cron.WithSeconds()) // 精确到秒
- spec := "0 */2 * * * ?" //cron表达式
- // 定时任务 检查微信支付是否充值成功
- _, err1 := crontab.AddFunc(spec, AutoCheckWXRechargeTask)
- if err1 != nil {
- return err1
- }
- // 启动定时器
- crontab.Start()
- // 定时任务是另起协程执行的,这里使用 select 简单阻塞.需要根据实际情况进行控制
- //select {} //阻塞主线程停止
- return nil
- }
- // 定时任务 检查微信支付是否充值成功
- func AutoCheckWXRechargeTask() {
- log.Println("AutoCheckWXRechargeTask running Start, Time :", time.Now())
- rechargeRecords, err := dao.RechargeRecordDao{}.GetWXRechargeByStatusList(1)
- if err != nil {
- log.Println("GetWXRechargeByStatusList", err)
- }
- var rechargeId string
- var noPayIds []int64
- for _, rechargeRecord := range rechargeRecords {
- rechargeId = rechargeRecord.RechargeID
- tradeState, err := service.RechargeService{}.QueryOrderByTradeId(rechargeRecord.EnterpriseID, rechargeRecord.SubAccountId, rechargeId)
- if err != nil {
- logrus.Errorf("AutoCheckWXRechargeTask [QueryOrderByTradeId] call Show err:%+v\n", err)
- }
- // 支付成功的状态会在方法里更新,未支付的需要单独更新
- if "NOTPAY" == tradeState {
- noPayIds = append(noPayIds, rechargeRecord.ID)
- }
- }
- err2 := dao.RechargeRecordDao{}.UpdateRechargeFailedList(noPayIds)
- if err2 != nil {
- log.Println("UpdateRechargeFailedList", err2)
- }
- log.Println("AutoCheckWXRechargeTask running End, Time :", time.Now())
- }
|