- 京东到家自提单支持,新增API:ConfirmSelfTake, GoodsOrder新增字段DeliveryType

This commit is contained in:
gazebo
2019-09-03 18:18:54 +08:00
parent d3a549a085
commit d54a4f569a
14 changed files with 105 additions and 27 deletions

View File

@@ -2,6 +2,7 @@ package jd
import (
"fmt"
"regexp"
"strings"
"time"
@@ -34,6 +35,13 @@ var (
jdapi.OrderStatusLocked: model.OrderStatusLocked,
jdapi.OrderStatusUnlocked: model.OrderStatusUnlocked,
}
deliveryTypeMap = map[int]string{
jdapi.CarrierNoCrowdSourcing: model.OrderDeliveryTypePlatform,
jdapi.CarrierNoSelfDelivery: model.OrderDeliveryTypeStoreSelf,
jdapi.CarrierNoSelfTake: model.OrderDeliveryTypeSelfTake,
}
selfTakeCodeReg = regexp.MustCompile(`等待用户凭提货码(\d+)于`)
)
func (c *PurchaseHandler) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
@@ -180,6 +188,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
OriginalData: string(utils.MustMarshal(result)),
ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]),
DistanceFreightMoney: utils.Interface2Int64WithDefault(result["merchantPaymentDistanceFreightMoney"], 0),
DeliveryType: deliveryTypeMap[int(utils.Str2Int64WithDefault(utils.Interface2String(result["deliveryCarrierNo"]), 0))],
}
order.Status = c.getStatusFromVendorStatus(order.VendorStatus)
businessTage := utils.Interface2String(result["businessTag"])
@@ -471,3 +480,26 @@ func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, order *model.Goo
}
return err
}
func (c *PurchaseHandler) GetSelfTakeCode(ctx *jxcontext.Context, vendorOrderID string) (selfTakeCode string, err error) {
orderTrackList, err := getAPI("").GetByOrderNoForOaos(vendorOrderID)
if err == nil {
for _, v := range orderTrackList {
if v.TagCode == 180 {
searchResult := selfTakeCodeReg.FindStringSubmatch(v.MsgContent)
if searchResult != nil && len(searchResult[1]) > 0 {
selfTakeCode = searchResult[1]
}
break
}
}
}
return selfTakeCode, err
}
func (c *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, vendorOrderID, selfTakeCode string) (err error) {
if globals.EnableJdStoreWrite {
err = getAPI("").CheckSelfPickCode(selfTakeCode, vendorOrderID, ctx.GetUserName())
}
return err
}