diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 3e770eca6..f4dede278 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -104,6 +104,8 @@ var ( } importantTaskMap = &sync.Map{} + + cancelPayTimeOutOrderList = localjx.GetHalfHoursList() ) func GetImportantTaskID(taskName string) string { @@ -180,6 +182,9 @@ func Init() { ScheduleTimerFunc("AutoPayForPopluarMan", func() { localjx.AutoPayForPopluarMan(jxcontext.AdminCtx) }, autoPayForPopluarManList) + ScheduleTimerFunc("CancelPayTimeOutOrder", func() { + localjx.CancelPayTimeOutOrder(jxcontext.AdminCtx) + }, cancelPayTimeOutOrderList) } ScheduleTimerFunc("AutoSaleStoreSku", func() { cms.AutoSaleStoreSku(jxcontext.AdminCtx, nil, false) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index ec4078680..04e242f77 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -39,6 +39,8 @@ const ( specialFreightPrice = 1500 wxAppID = "wx4b5930c13f8b1170" + + autoCancelOrderReason = "支付超时,系统自动取消!" ) type JxSkuInfo struct { @@ -808,3 +810,42 @@ func updateUserAndTransfers(db *dao.DaoDB, param *wxpayapi.TransfersParam, user _, err = dao.UpdateEntity(db, user, "ProfitSum", "Profit", "Arrears") return err } + +func CancelPayTimeOutOrder(ctx *jxcontext.Context) (err error) { + db := dao.GetDB() + var orders []*model.GoodsOrder + sql := ` + SELECT * + FROM goods_order + WHERE order_created_at >= ? AND order_created_at <= NOW() + AND status = ? + AND vendor_id = ? + ` + sqlParams := []interface{}{ + time.Now().Add(-time.Minute * 30), + model.OrderStatusWait4Pay, + model.VendorIDJX, + } + err = dao.GetRows(db, &orders, sql, sqlParams) + for _, v := range orders { + if v.OrderCreatedAt.Add(2 * time.Minute).Before(time.Now()) { + err2 := CancelOrder(ctx, v, autoCancelOrderReason) + err = err2 + } + } + return err +} + +func GetHalfHoursList() (strs []string) { + for k := 0; k < 3; k++ { + for i := 0; i < 10; i++ { + for j := 0; j < 4; j += 3 { + if k == 2 && i > 3 { + break + } + strs = append(strs, utils.Int2Str(k)+utils.Int2Str(i)+":"+utils.Int2Str(j)+"0"+":00") + } + } + } + return strs +}