From 9d75a5c2b71ca2b1631142a823af100258d6bf12 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 13 Mar 2019 13:55:49 +0800 Subject: [PATCH] - hack a jd bug, modifySellerDelivery return code 0 when failed. --- platformapi/jdapi/jdapi.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/platformapi/jdapi/jdapi.go b/platformapi/jdapi/jdapi.go index b4ce107c..421e980b 100644 --- a/platformapi/jdapi/jdapi.go +++ b/platformapi/jdapi/jdapi.go @@ -227,7 +227,8 @@ func genNoPageResultParser(codeKey, msgKey, resultKey, okCode string) func(data panic(fmt.Sprintf("genNoPageResultParser codeKey %s can not be found in result:%v", codeKey, data)) } innerCode := forceInnerCode2Str(rawInnerCode) - if innerCode == okCode { + errMsg := formatErrorMsg(data[msgKey]) + if innerCode == okCode && errMsg != "调用订单中心修改承运商接口失败!" { // todo 京东的order/modifySellerDelivery在失败时也返回成功code,临时处理一下 if resultKey != "" { if innerData, ok := data[resultKey]; ok { return innerData, nil @@ -238,17 +239,20 @@ func genNoPageResultParser(codeKey, msgKey, resultKey, okCode string) func(data } return nil, nil } - if msg, ok := data[msgKey]; ok { - errMsg := utils.Format4Output(msg, true) - if innerCode == ResponseInnerCodePartialFailed { - errMsg += ", " + utils.Format4Output(data[resultKey], true) - } - return nil, utils.NewErrorCode(errMsg, innerCode, 1) + if innerCode == ResponseInnerCodePartialFailed { + errMsg += ", " + utils.Format4Output(data[resultKey], true) } - panic(fmt.Sprintf("genNoPageResultParser msgKey %s can not be found in result:%v", msgKey, data)) + return nil, utils.NewErrorCode(errMsg, innerCode, 1) } } +func formatErrorMsg(msg interface{}) (strMsg string) { + if msg != nil { + strMsg = utils.Format4Output(msg, true) + } + return strMsg +} + func (a *API) AccessAPINoPage(apiStr string, jdParams map[string]interface{}, keyToRemove, keyToKeep []string, resultParser func(data map[string]interface{}) (interface{}, error)) (interface{}, error) { if resultParser == nil { resultParser = genNoPageResultParser("code", "msg", "result", "0")