- more interface and const added.

This commit is contained in:
gazebo
2018-07-10 13:28:22 +08:00
parent 7c54e7da92
commit 5702df37b0
8 changed files with 217 additions and 14 deletions

View File

@@ -40,6 +40,13 @@ var (
FailedResponse = &CallbackResponse{Code: ResponseHttpCodeGeneralErr}
)
func Err2CallbackResponse(err error, data string) *CallbackResponse {
if err == nil {
return SuccessResponse
}
return FailedResponse
}
func (a *API) signCallbackParams(mapData map[string]interface{}) string {
values := make([]string, 0)
for _, k := range []string{"client_id", "order_id", "update_time"} {

View File

@@ -20,7 +20,7 @@ const (
const (
OrderStatusWaitingForAccept = 1
OrderStatusPickingup = 2
OrderStatusAccepted = 2 // 待取货
OrderStatusDeliverying = 3
OrderStatusFinished = 4
OrderStatusCanceled = 5

View File

@@ -12,12 +12,72 @@ import (
// https://open.shop.ele.me/openapi/documents/callback
const (
MsgTypeOrderValid = 10
MsgTypeMerchantValid = 12
MsgTypeOrderAccepted = 12
MsgTypeOrderCanceled = 14
MsgTypeMerchantInvalid = 15
MsgTypeOrderInvalid = 15
MsgTypeOrderForceInvalid = 17
MsgTypeOrderFinished = 18
MsgTypeClientUrgeOrder = 45
MsgTypeUserApplyCancel = 20
MsgTypeUserCancelApplyCancel = 21
MsgTypeMerchantRejectCancel = 22
MsgTypeMerchantAcceptCancel = 23
MsgTypeUserApplyArbitrateCancel = 24
MsgTypeCustomerServiceAcceptCancel = 25
MsgTypeCustomerServiceRejectCancel = 26
MsgTypeUserApplyRefund = 30
MsgTypeUserCancelRefund = 31
MsgTypeMerchantRejectRefund = 32
MsgTypeMerchantAcceptRefund = 33
MsgTypeUserApplyArbitrateRefund = 34
MsgTypeCustomerServiceAcceptRefund = 35
MsgTypeCustomerServiceRejectRefund = 36
MsgTypeUserUrgeOrder = 45
MsgTypeWaybillWait4DeliveryVendor = 51
MsgTypeWaybillWait4Courier = 52
MsgTypeWaybillPickingUp = 53
MsgTypeWaybillCourierArrived = 54
MsgTypeWaybillDelivering = 55
MsgTypeWaybillDelivered = 56
MsgTypeWaybillCanceledByMerchant = 57
MsgTypeWaybillCanceledByUser = 58
MsgTypeWaybillCanceledBySystem = 59
MsgTypeWaybillFailedCallLate = 60
MsgTypeWaybillFailedStore = 61
MsgTypeWaybillFailedMerchantInterrupt = 62
MsgTypeWaybillFailedCannotCantactUser = 63
MsgTypeWaybillFailedUserApplyRefund = 64
MsgTypeWaybillFailedWrongAddress = 65
MsgTypeWaybillFailedOutOfSerivceRange = 66
MsgTypeWaybillFailedCourierMarkException = 67
MsgTypeWaybillFailedSystemMarkException = 68
MsgTypeWaybillFailedOtherException = 69
MsgTypeWaybillFailedTimeout = 70
MsgTypeDeiverBySelf = 71
MsgTypeDontNeeded = 72
MsgTypeRejectedOnlySupportPayOnline = 73
MsgTypeRejectedOutOfServiceRange = 74
MsgTypeRejectedLateRequest = 75
MsgTypeRejectedSystemError = 76
)
const (
DeliveryStateToBeAssignedMerchant = "tobeAssignedMerchant"
DeliveryStateToBeAssignedCourier = "tobeAssignedCourier"
DeliveryStateToBeFetched = "tobeFetched"
DeliveryStateDelivering = "delivering"
DeliveryStateCompleted = "completed"
DeliveryStateCancelled = "cancelled"
DeliveryStateException = "exception"
DeliveryStateArrived = "arrived"
DeliveryStateSelfDelivery = "selfDelivery"
DeliveryStateNoMoreDelivery = "noMoreDelivery"
DeliveryStateReject = "reject"
)
type CallbackResponse struct {
@@ -30,15 +90,78 @@ type CallbackMsg struct {
Type int `json:"type"`
Message string `json:"message"`
ShopID int `json:"shopId"`
Timestamp int64 `json:"timestamp"`
Timestamp int64 `json:"timestamp"` // 毫秒
UserID int64 `json:"userId"`
Signature string `json:"signature"`
}
type CallbackOrderStatusMsg struct {
OrderID string `json:"orderId"`
State string `json:"state"`
ShopID int `json:"shopId"`
UpdateTime int64 `json:"updateTime"` // 秒,文档上写的是毫秒,看示例数据应该是秒
Role int `json:"role"`
MsgType int `json:"-"` // 用于传递msg type不是真正消息的一部分
}
type GoodItem struct {
Name string `json:"name"`
Quantity int `json:"quantity"`
Price float64 `json:"price"`
VfoodID int64 `json:"vfoodiId"`
SkuID string `json:"skuId"`
}
const (
RefundTypeNormal = "normal"
RefundTypePart = "part"
)
type CallbackOrderCancelRefundMsg struct {
OrderID string `json:"orderId"`
RefundStatus string `json:"refundStatus"`
Reason string `json:"reason"`
ShopID int `json:"shopId"`
GoodsList []GoodItem `json:"goodsList"`
RefundType string `json:"refundType"`
TotalPrice float64 `json:"totalPrice"`
UpdateTime int64 `json:"updateTime"` // 秒
MsgType int `json:"-"` // 用于传递msg type不是真正消息的一部分
}
type CallbackOrderUrgeMsg struct {
OrderID string `json:"orderId"`
ShopID int `json:"shopId"`
RemindID int `json:"remindId"`
UserID int `json:"userId"`
UpdateTime int64 `json:"updateTime"` // 秒
MsgType int `json:"-"` // 用于传递msg type不是真正消息的一部分
}
type CallbackWaybillStatusMsg struct {
OrderID string `json:"orderId"`
ShopID int `json:"shopId"`
State string `json:"state"`
SubState string `json:"subState"`
Name string `json:"name"`
Phone string `json:"phone"`
UpdateAt int64 `json:"updateAt"` // 毫秒
MsgType int `json:"-"` // 用于传递msg type不是真正消息的一部分
}
var (
SuccessResponse = &CallbackResponse{"ok"}
)
func Err2CallbackResponse(err error, data string) *CallbackResponse {
if err == nil {
return SuccessResponse
}
return &CallbackResponse{
Message: fmt.Sprintf("error:%v, data:%v", data),
}
}
func (a *API) unmarshalData(data []byte, msg interface{}) (callbackResponse *CallbackResponse) {
err := utils.UnmarshalUseNumber(data, msg)
if err != nil {

View File

@@ -1,6 +1,8 @@
package elmapi
const (
OrderStatusFake = "fake"
OrderStatusPending = "pending"
OrderStatusUnprocessed = "unprocessed"
OrderStatusRefunding = "refunding"
@@ -22,6 +24,27 @@ const (
CancelOrderTypeNotSatisfiedDeliveryRequirement = "notSatisfiedDeliveryRequirement"
)
const (
RefundStatusNoRefund = "noRefund"
RefundStatusApplied = "applied"
RefundStatusRejected = "rejected"
RefundStatusArbitrating = "arbitrating"
RefundStatusFailed = "failed"
RefundStatusSuccessful = "successful"
)
const (
RoleOrderUser = 1
RoleSystem = 2
RoleMerchert = 3
RoleCustomerService = 4
RoleOpenPlatform = 5
RoleSMS = 6
RolePrinter = 7
RoleRiskController = 8
RoleOrderFinished = 9
)
func (a *API) GetOrder(orderID string) (map[string]interface{}, error) {
result, err := a.AccessAPI("eleme.order.getOrder", map[string]interface{}{
"orderId": orderID,

View File

@@ -8,10 +8,34 @@ const (
OrderStatusAddComment = "12001"
OrderStatusModifyComment = "12006"
OrderStatusNew = "32000"
OrderStatusAdjust = "33080"
OrderStatusUserCancel = "20030"
OrderStatusWaitOutStore = "32001"
OrderStatusPurchased = "41000" // 也即待处理JD的消息很怪新定单消息发过来是32000但如果不是自动接单的去查却是41000接单后才变为32000
OrderStatusNew = "32000"
OrderStatusAdjust = "33080"
OrderStatusWaitOutStore = "32001"
OrderStatusFinishedPickup = "2"
OrderStatusDelivering = "33040"
OrderStatusDelivered = "33060"
OrderStatusFinished = "90000"
OrderStatusCanceled = "20020"
OrderStatusUserApplyCancel = "20030" // 这个其实不是一个状态,是一个动作
OrderStatusLocked = "20010"
OrderStatusUnlocked = "20050"
OrderStatusInfoChanged = "1"
)
const (
DeliveryStatusWait4Grap = "10"
DeliveryStatusAccepted = "20"
DeliveryStatusCourierCanceled = "21"
DeliveryStatusCourierArrived = "23"
DeliveryStatusFailedGetGoods = "25"
DeliveryStatusFailedGetGoodsRejected = "26"
DeliveryStatusFailedGetGoodsWaiting = "27"
DeliveryStatusGotGoods = "30"
DeliveryStatusFailedDelivery = "35"
DeliveryStatusFinished = "40"
)
func (a API) OrderQuery(jdParams map[string]interface{}) (retVal []interface{}, err error) {
@@ -19,10 +43,14 @@ func (a API) OrderQuery(jdParams map[string]interface{}) (retVal []interface{},
return
}
func (a API) QuerySingleOrder(orderId string) ([]interface{}, error) {
func (a API) QuerySingleOrder(orderId string) (map[string]interface{}, error) {
jdParams := make(map[string]interface{})
jdParams["orderId"] = orderId
return a.AccessAPIHavePage("order/es/query", jdParams, nil, nil, nil)
result, err := a.AccessAPIHavePage("order/es/query", jdParams, nil, nil, nil)
if err == nil {
return nil, err
}
return result[0].(map[string]interface{}), nil
}
func (a API) LegacyQuerySingleOrder(orderId string) (map[string]interface{}, error) {

View File

@@ -39,6 +39,15 @@ var (
SignatureIsNotOk = &CallbackResponse{Code: -1}
)
func Err2CallbackResponse(err error, data string) *CallbackResponse {
if err == nil {
return SuccessResponse
}
return &CallbackResponse{
Code: -1,
}
}
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
request.ParseForm()
sign := a.signParams(request.PostForm)
@@ -66,7 +75,7 @@ func (a *API) GetOrderCallbackMsg(request *http.Request) (orderMsg *CallbackOrde
OrderInfoCommon: OrderInfoCommon{
DeliveryID: utils.Str2Int64(request.FormValue("delivery_id")),
MtPeisongID: request.FormValue("mt_peisong_id"),
OrderId: request.FormValue("order_id"),
OrderID: request.FormValue("order_id"),
CourierName: request.FormValue("courier_name"),
CourierPhone: request.FormValue("courier_phone"),
},
@@ -90,7 +99,7 @@ func (a *API) GetOrderExceptionCallbackMsg(request *http.Request) (orderMsg *Cal
OrderInfoCommon: OrderInfoCommon{
DeliveryID: utils.Str2Int64(request.FormValue("delivery_id")),
MtPeisongID: request.FormValue("mt_peisong_id"),
OrderId: request.FormValue("order_id"),
OrderID: request.FormValue("order_id"),
CourierName: request.FormValue("courier_name"),
CourierPhone: request.FormValue("courier_phone"),
},

View File

@@ -73,7 +73,7 @@ const (
type OrderInfoCommon struct {
DeliveryID int64
MtPeisongID string
OrderId string
OrderID string
CourierName string
CourierPhone string
}