优化jdapi.CallbackMsg

This commit is contained in:
gazebo
2019-12-07 23:52:35 +08:00
parent 61176c2618
commit bd0285aaf3
3 changed files with 49 additions and 13 deletions

View File

@@ -112,7 +112,7 @@ type CallbackResponse struct {
}
type CallbackMsg struct {
MsgURL string `json:"-"`
MsgURL string `json:"msgURL"`
AppKey string `json:"app_key"`
Token string `json:"token"`
@@ -122,11 +122,11 @@ type CallbackMsg struct {
V string `json:"v"`
JdParamJSON string `json:"jd_param_json"`
Param interface{} `json:"param"`
Param interface{} `json:"-"` // 这里json必须是-否则会导致json encode时死递归
}
type CallbackOrderMsg struct {
MsgURL string `json:"msgURL"`
*CallbackMsg
BillID string `json:"billId"`
OutBillID string `json:"outBillId"`
StatusID string `json:"statusId"`
@@ -135,6 +135,7 @@ type CallbackOrderMsg struct {
}
type CallbackDeliveryStatusMsg struct {
*CallbackMsg
OrderID string `json:"orderId"`
DeliveryStatusTime string `json:"deliveryStatusTime"`
DeliveryManNo string `json:"deliveryManNo"`
@@ -151,6 +152,7 @@ type CallbackDeliveryStatusMsg struct {
}
type CallbackStoreStockMsg struct {
*CallbackMsg
StationNo string `json:"stationNo"`
SkuID int64 `json:"skuId"`
Have bool `json:"have"`
@@ -247,7 +249,9 @@ func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (cal
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
msg.MsgURL = msgURL
msg.CallbackMsg = &CallbackMsg{
MsgURL: msgURL,
}
}
return msg, callbackResponse
}
@@ -302,17 +306,23 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData m
callbackMsg.MsgURL = msgURL
if msgURL == CallbackMsgDeliveryCarrierModify {
var deliveryMsg *CallbackDeliveryStatusMsg
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg)
callbackMsg.Param = deliveryMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg); err == nil {
callbackMsg.Param = deliveryMsg
deliveryMsg.CallbackMsg = callbackMsg
}
} else if msgURL == CallbackMsgStockIsHave {
var mapData map[string]interface{}
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
callbackMsg.Param = map2StockCallbackMsg(mapData)
stockMsg := map2StockCallbackMsg(mapData)
callbackMsg.Param = stockMsg
stockMsg.CallbackMsg = callbackMsg
}
} else {
var orderMsg *CallbackOrderMsg
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg)
callbackMsg.Param = orderMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg); err == nil {
callbackMsg.Param = orderMsg
orderMsg.CallbackMsg = callbackMsg
}
}
}
if err != nil {