diff --git a/platform/jdapi/jdapi.go b/platform/jdapi/jdapi.go index 081f5788..c007b763 100644 --- a/platform/jdapi/jdapi.go +++ b/platform/jdapi/jdapi.go @@ -19,6 +19,27 @@ import ( "go.uber.org/zap" ) +const ( + // JDErrorCodeSuccess 操作成功 + JDErrorCodeSuccess = "0" + // JDerrorCodeAccessFailed 操作失败,请重试,如还不能正常提供服务,可以提交工单(https://opengd.jd.com)详细说明一下,开放平台跟进回复。 + JDerrorCodeAccessFailed = "-1" + // JDerrorCodeFailedCanAutoRetry 操作失败,系统会自动重试,如还不能正常提供服务,可以提交工单(https://opengd.jd.com)详细说明一下,开放平台跟进回复。 + JDerrorCodeFailedCanAutoRetry = "-10000" + JDerrorCodeFailedAccessDB = "10000" + // JDerrorCodeMissingMandatoryParam 请求参数中缺失必填项信息,请检查,如不清楚,请访问到家开放平台(https://opendj.jd.com)API分组有接口详细说明。 + JDerrorCodeMissingMandatoryParam = "10005" + JDerrorCodeInvalidToken = "10013" + JDerrorCodeInvalidSign = "10014" + JDerrorCodeAbnormalParam = "10015" + JDerrorCodeMethodNotExist = "10018" + JDErrorCodeExceedLimit = "10032" + + JDErrorCodeTimeout = "100022" + JDErrorCodeTomcateFailed = "100023" + JDErrorCodeLoadUnexpected = "100024" +) + type JDAPI struct { token string appKey string @@ -47,15 +68,17 @@ var ( ErrInnerCodeIsNotOk = errors.New("JD result inner code is not ok") exceedLimitCodes = map[string]int{ - "10032": 1, + JDErrorCodeExceedLimit: 1, } + + // todo replace all magic number canRetryCodes = map[string]int{ - "-10000": 1, - "-1": 1, - "10000": 1, - "100022": 1, - "100023": 1, - "100024": 1, + JDerrorCodeFailedCanAutoRetry: 1, + JDerrorCodeAccessFailed: 1, + JDerrorCodeFailedAccessDB: 1, + JDErrorCodeTimeout: 1, + JDErrorCodeTomcateFailed: 1, + JDErrorCodeLoadUnexpected: 1, } jdResultInnerCodeKeys = []string{"code", "retCode", "errorCode"} diff --git a/platform/jdapi/order.go b/platform/jdapi/order.go index b76df222..df5cbff8 100644 --- a/platform/jdapi/order.go +++ b/platform/jdapi/order.go @@ -4,6 +4,42 @@ import ( "git.rosy.net.cn/baseapi/utils" ) +type JDOrderMsgResponse struct { + Code string + Msg string + Data string +} + +type JDOrderMsg struct { + Id int `json:"-"` // 用于传递Jdorder的主键值,减少一次读库操作 + BillId string + StatusId string + Timestamp string +} + +type JDDeliveryStatusMsg struct { + OrderId string + DeliveryStatusTime string + DeliveryManNo string + DeliveryManName string + DeliveryManPhone string + DeliveryCarrierNo string + DeliveryCarrierName string + DeliveryStatus int + Remark string + FailType string + CreatePin string + OpTime int64 + InputTime string +} + +const ( + JdOrderStatusNew = "32000" + JdOrderStatusAdjust = "33080" + JdOrderStatusUserCancel = "20030" + JdOrderStatusWaitOutStore = "32001" +) + func (j JDAPI) OrderQuery(jdParams map[string]string) (retVal []interface{}, err error) { retVal, err = j.AccessJDQueryHavePage("order/es/query", jdParams, nil, nil, nil) return @@ -42,5 +78,5 @@ func (j JDAPI) OrderAcceptOperate(orderId string, isAgreed bool) (interface{}, e "isAgreed": utils.Bool2String(isAgreed), "operator": getJDOperator(), } - return j.AccessJDQueryNoPage("order/es/query", jdParams, nil, nil) + return j.AccessJDQueryNoPage("ocs/orderAcceptOperate", jdParams, nil, nil) } diff --git a/utils/utils.go b/utils/utils.go index 41d2f24b..455dd89c 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -3,6 +3,7 @@ package utils import ( "bytes" "encoding/json" + "fmt" "reflect" "strconv" ) @@ -86,6 +87,15 @@ func UnmarshalUseNumber(data []byte, result interface{}) error { return d.Decode(result) } +func MustMarshal(obj interface{}) []byte { + byteArr, err := json.Marshal(obj) + if err != nil { + panic(fmt.Sprintf("err when Marshal obj:%v", obj)) + } + + return byteArr +} + func Bool2String(value bool) string { if value { return "true" @@ -102,3 +112,11 @@ func Str2Int64(str string) int64 { retVal, _ := strconv.ParseInt(str, 10, 64) return retVal } + +func Int64ToStr(value int64) string { + return strconv.FormatInt(value, 10) +} + +func Int2Str(value int) string { + return strconv.Itoa(value) +}