diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 46d71e0d8..5e73a8532 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -1,8 +1,13 @@ package jdshop import ( + "fmt" + "net/http" + "strings" "time" + "git.rosy.net.cn/baseapi" + "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -41,17 +46,11 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order * return p.Map2Order(utils.Struct2FlatMap(resultOrders)), err } func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { - // orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ - // OrderID: vendorOrderID, - // Current: 1, - // PageSize: 1, - // }) - // if err != nil { - // return 0, err - // } - // return status2Jxstatus(orderResult.OrderList[0].OrderStatus), err - order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJDShop) - return order.Status, err + params := make(map[string]interface{}) + params["orderID"] = vendorOrderID + params["token"] = "JxCaIsHiGetJdsOrderTmpToken_20200731" + result, err := apiToYd("order/GetJdsOrder", params) + return status2Jxstatus(result["orderState"].(string)), err } func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { @@ -64,14 +63,14 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI return ChangeOrderStatus(order.VendorOrderID, status, "") } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { - // status, err := p.GetOrderStatus("", order.VendorOrderID2) - // //说明此时该订单在平台上已经取消了 - // if order.Status == model.OrderStatusCanceled { - // err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单状态发生了改变") - // } else { - // err = - // } - return ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "自动拣货完成") + status, err := p.GetOrderStatus("", order.VendorOrderID2) + //说明此时该订单在平台上已经取消了 + if status == model.OrderStatusCanceled { + err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单在京东商城已被取消!") + } else { + err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "自动拣货完成") + } + return err } func (p *PurchaseHandler) CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { @@ -164,15 +163,43 @@ func (p *PurchaseHandler) OrderTransfer(ctx *jxcontext.Context, vendorOrderID, v return err } -func status2Jxstatus(status int) (statusJx int) { - if status == jdshopapi.JdsOrderStatusWaittingPay { - statusJx = model.OrderStatusWait4Pay - } else if status == jdshopapi.JdsOrderStatusWaittingPayDel { - statusJx = model.OrderStatusApplyCancel - } else if status == jdshopapi.JdsOrderStatusWaittingExport { - statusJx = model.OrderStatusAccepted - } else if status == jdshopapi.JdsOrderStatusPause { +func status2Jxstatus(status string) (statusJx int) { + if status == jdshopapi.OrderStatusPopPause || status == jdshopapi.OrderStatusPause { statusJx = model.OrderStatusNew + } else if status == jdshopapi.OrderStatusWait { + statusJx = model.OrderStatusAccepted + } else if status == jdshopapi.OrderStatusCancel { + statusJx = model.OrderStatusCanceled } return statusJx } + +const ( + ProdURL = "http://116.196.82.188:8080/v2/" +) + +func apiToYd(url string, params map[string]interface{}) (retVal map[string]interface{}, err error) { + cl := &http.Client{} + err = platformapi.AccessPlatformAPIWithRetry(cl, + func() *http.Request { + request, _ := http.NewRequest(http.MethodPost, ProdURL+url, strings.NewReader(utils.Map2URLValues(params).Encode())) + request.Header.Set("Content-Type", "application/x-www-form-urlencoded") + return request + }, + nil, + func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) { + if jsonResult1 == nil { + return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") + } + if err == nil { + if jsonResult1["code"] != nil { + errLevel = platformapi.ErrLevelGeneralFail + err = utils.NewErrorCode(jsonResult1["desc"].(string), jsonResult1["code"].(string)) + baseapi.SugarLogger.Debugf("yd AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true)) + } + retVal = jsonResult1 + } + return errLevel, err + }) + return retVal, err +}