diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index d27769f5f..cdf04c24c 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -3,6 +3,7 @@ package mtwm import ( "errors" "fmt" + "math" "net/url" "regexp" "strings" @@ -571,19 +572,29 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, parentTask tasksch. vendorStoreID := batchItemList[0].(string) var orderIDs []string seqStart := 1 + i := 0 for { - seqEnd := seqStart + mtwmapi.MaxGap4GetOrderIdByDaySeq - 1 - tmpOrderIDs, err2 := api.MtwmAPI.GetOrderIdByDaySeq(vendorStoreID, queryDate, seqStart, seqEnd) + batchSize := int(math.Min(math.Pow(2, float64(i)), float64(mtwmapi.MaxGap4GetOrderIdByDaySeq))) + seqEnd := seqStart + batchSize - 1 + var tmpOrderIDs []int64 + if seqStart == seqEnd { + if vendorOderID, err2 := api.MtwmAPI.GetOrderIdByDaySeqSingle(vendorStoreID, queryDate, seqStart); err2 == nil { + tmpOrderIDs = []int64{vendorOderID} + } + } else { + tmpOrderIDs, err = api.MtwmAPI.GetOrderIdByDaySeq(vendorStoreID, queryDate, seqStart, seqEnd) + } if len(tmpOrderIDs) > 0 { for _, v := range tmpOrderIDs { orderIDs = append(orderIDs, utils.Int64ToStr(v)) } } - if err = err2; err != nil || len(tmpOrderIDs) < mtwmapi.MaxGap4GetOrderIdByDaySeq { + if err != nil || len(tmpOrderIDs) < batchSize { err = nil break } seqStart = seqEnd + 1 + i++ } retVal = orderIDs return retVal, nil