- mtwm callback

This commit is contained in:
gazebo
2018-11-28 20:02:21 +08:00
parent 32c90b1678
commit ffae5e8434
10 changed files with 154 additions and 12 deletions

View File

@@ -1,13 +1,13 @@
package mtwm
import (
"math"
"time"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals/api"
)
@@ -41,7 +41,7 @@ func (p *PurchaseHandler) GetOrder(vendorOrderID string) (order *model.GoodsOrde
VendorOrderID2: utils.Int64ToStr(utils.MustInterface2Int64(result["wm_order_id_view"])),
VendorID: model.VendorIDMTWM,
VendorStoreID: result["app_poi_code"].(string),
StoreID: int(utils.Interface2Int64WithDefault(result["app_poi_code"].(string), 0)),
StoreID: int(utils.Str2Int64(result["app_poi_code"].(string))),
StoreName: result["wm_poi_name"].(string),
ConsigneeName: result["recipient_name"].(string),
ConsigneeMobile: result["recipient_phone"].(string),
@@ -56,9 +56,6 @@ func (p *PurchaseHandler) GetOrder(vendorOrderID string) (order *model.GoodsOrde
ActualPayPrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(result["total"])),
Skus: []*model.OrderSku{},
}
if order.StoreID > math.MaxInt32 {
order.StoreID = 0
}
order.Status = p.GetStatusFromVendorStatus(order.VendorStatus)
if deliveryTime == 0 {
order.BusinessType = model.BusinessTypeImmediate
@@ -71,9 +68,13 @@ func (p *PurchaseHandler) GetOrder(vendorOrderID string) (order *model.GoodsOrde
order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng)
order.ConsigneeLat = jxutils.StandardCoordinate2Int(originalLat)
detail := result["detail"].([]interface{})
for _, product2 := range detail {
product := product2.(map[string]interface{})
var detail []map[string]interface{}
if err := utils.UnmarshalUseNumber([]byte(result["detail"].(string)), &detail); err != nil {
return nil, err
}
// detail := result["detail"].([]interface{})
for _, product := range detail {
// product := product2.(map[string]interface{})
skuName := product["food_name"].(string)
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName)
skuID := utils.Interface2String(product["sku_id"])
@@ -105,6 +106,42 @@ func (p *PurchaseHandler) GetOrder(vendorOrderID string) (order *model.GoodsOrde
return order, err
}
func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
var err error
if msg.Cmd == mtwmapi.MsgTypeNewOrder || msg.Cmd == mtwmapi.MsgTypeOrderModified {
order, err2 := c.GetOrder(GetOrderIDFromMsg(msg))
if err = err2; err == nil {
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
err = partner.CurOrderManager.OnOrderNew(order, order.VendorStatus)
} else {
err = partner.CurOrderManager.OnOrderAdjust(order, order.VendorStatus)
}
}
} else {
// todo 好像没有“商家已收到”消息回调,是否需要模拟?
status := c.callbackMsg2Status(msg)
err = partner.CurOrderManager.OnOrderStatusChanged(status)
}
return mtwmapi.Err2CallbackResponse(err, "")
}
func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) *model.OrderStatus {
orderID := GetOrderIDFromMsg(msg)
vendorStatus := msg.Data.Get("status")
orderStatus := &model.OrderStatus{
VendorOrderID: orderID,
VendorID: model.VendorIDMTWM,
OrderType: model.OrderTypeOrder,
RefVendorOrderID: orderID,
RefVendorID: model.VendorIDMTWM,
VendorStatus: vendorStatus,
Status: c.GetStatusFromVendorStatus(vendorStatus),
StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.Data.Get("utime"))),
Remark: "",
}
return orderStatus
}
func getTimeFromTimestamp(timeStamp int64) time.Time {
if timeStamp < 1538103149 { // 立即达订单给的是1而不是空01538103149不是特殊值只是一个任意之前的时间这样写可以处理
return utils.DefaultTimeValue