auto_task_recharge.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package schedule
  2. import (
  3. "github.com/sirupsen/logrus"
  4. "log"
  5. "time"
  6. "youngee_m_api/app/dao"
  7. "youngee_m_api/app/service"
  8. )
  9. //func AutoTaskRecharge() error {
  10. // // 新建一个定时任务对象
  11. // crontab := cron.New(cron.WithSeconds()) // 精确到秒
  12. // spec := "0 */2 * * * ?" //cron表达式
  13. //
  14. // // 定时任务 检查微信支付是否充值成功
  15. // _, err1 := crontab.AddFunc(spec, AutoCheckWXRechargeTask)
  16. // if err1 != nil {
  17. // return err1
  18. // }
  19. //
  20. // // 启动定时器
  21. // crontab.Start()
  22. // // 定时任务是另起协程执行的,这里使用 select 简单阻塞.需要根据实际情况进行控制
  23. // //select {} //阻塞主线程停止
  24. // return nil
  25. //}
  26. // 定时任务 检查微信支付是否充值成功
  27. func AutoCheckWXRechargeTask() {
  28. log.Println("AutoCheckWXRechargeTask running Start, Time :", time.Now())
  29. rechargeRecords, err := dao.RechargeRecordDao{}.GetWXRechargeByStatusList(1)
  30. if err != nil {
  31. log.Println("GetWXRechargeByStatusList", err)
  32. }
  33. var rechargeId string
  34. var noPayIds []int64
  35. for _, rechargeRecord := range rechargeRecords {
  36. rechargeId = rechargeRecord.RechargeID
  37. tradeState, err := service.RechargeService{}.QueryOrderByTradeId(rechargeRecord.EnterpriseID, rechargeRecord.SubAccountId, rechargeId)
  38. if err != nil {
  39. logrus.Errorf("AutoCheckWXRechargeTask [QueryOrderByTradeId] call Show err:%+v\n", err)
  40. }
  41. // 支付成功的状态会在方法里更新,未支付的需要单独更新
  42. if "NOTPAY" == tradeState {
  43. noPayIds = append(noPayIds, rechargeRecord.ID)
  44. }
  45. }
  46. if len(noPayIds) > 0 {
  47. err2 := dao.RechargeRecordDao{}.UpdateRechargeFailedList(noPayIds)
  48. if err2 != nil {
  49. log.Println("UpdateRechargeFailedList", err2)
  50. }
  51. }
  52. log.Println("AutoCheckWXRechargeTask running End, Time :", time.Now())
  53. }