This commit is contained in:
邹宗楠
2022-11-04 21:06:40 +08:00
parent 6cb56693d8
commit 24e92bb70c
2 changed files with 83 additions and 33 deletions

View File

@@ -99,7 +99,9 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status)) err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
defer func(order *model.Waybill) { defer func(order *model.Waybill) {
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
delivery.PullTiktokRiderInfo(&mtpsapi.RiderInfo{ }(order)
if order.OrderVendorID == model.VendorIDDD {
result := &mtpsapi.RiderInfo{
OrderId: order.VendorOrderID, OrderId: order.VendorOrderID,
ThirdCarrierOrderId: order.VendorOrderID, ThirdCarrierOrderId: order.VendorOrderID,
CourierName: order.CourierName, CourierName: order.CourierName,
@@ -107,8 +109,44 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
LogisticsProviderCode: "10002", LogisticsProviderCode: "10002",
LogisticsStatus: order.Status, LogisticsStatus: order.Status,
OpCode: "", OpCode: "",
}) }
}(order) switch order.Status {
case dadaapi.OrderStatusWaitingForAccept: // 待接单,召唤骑手
result.LogisticsStatus = model.WaybillStatusNew
result.LogisticsContext = model.RiderWaitRider
case dadaapi.OrderStatusAccepted: // 待取货
result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手
result.LogisticsContext = model.RiderWaitGetGoods
case dadaapi.OrderStatusDelivering: // 配送中
result.LogisticsStatus = model.WaybillStatusDelivering
result.LogisticsContext = model.RiderGetOrderDelivering
case dadaapi.OrderStatusFinished: // 完成
result.LogisticsStatus = model.WaybillStatusDelivered
result.LogisticsContext = model.RiderGetOrderDelivered
case dadaapi.OrderStatusCanceled: // 取消
result.LogisticsStatus = model.WaybillStatusCanceled
result.LogisticsContext = model.RiderGetOrderCanceled
case 8: // 指派单,不处理
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
case 9: // 配送异常返回值
result.LogisticsStatus = model.WaybillStatusDeliverFailed
result.LogisticsContext = model.RiderGetOrderDeliverFailed
case 10: // 妥投异常之物品返回完成 - 不处理
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
case dadaapi.OrderStatusReturningInOrder: // 骑手到店
result.LogisticsStatus = model.WaybillStatusCourierArrived
result.LogisticsContext = model.RiderToStore
case dadaapi.OrderStatusAddOrderFailed: // 创建达达运单失败 - 不处理
result.LogisticsStatus = model.WaybillStatusFailed
result.LogisticsContext = model.RiderGetOrderDeliverOther
default:
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
}
delivery.PullTiktokRiderInfo(result)
}
return err return err
} }

View File

@@ -86,17 +86,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
riderInfo.CourierName = "石锋" riderInfo.CourierName = "石锋"
riderInfo.CourierPhone = "18048531223" riderInfo.CourierPhone = "18048531223"
riderInfo.LogisticsProviderCode = "10017" riderInfo.LogisticsProviderCode = "10017"
if wayBillStatus == model.WaybillStatusNew {
riderInfo.LogisticsStatus = model.WaybillStatusNew
riderInfo.LogisticsContext = "呼叫骑手,新建运单"
} else if wayBillStatus == model.WaybillStatusCanceled {
riderInfo.LogisticsStatus = model.WaybillStatusCanceled
riderInfo.LogisticsContext = "取消骑手"
} else {
riderInfo.LogisticsStatus = model.WaybillStatusDeliverFailed
riderInfo.LogisticsContext = "配送异常,等待恢复"
}
} }
riderInfo.ThirdCarrierOrderId = v.VendorWaybillID riderInfo.ThirdCarrierOrderId = v.VendorWaybillID
@@ -131,14 +120,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
continue continue
} }
if v.VendorID == model.VendorIDDD && (riderInfo.LogisticsStatus == 100 || riderInfo.LogisticsStatus == 0 || riderInfo.LogisticsStatus == 20) {
riderInfo.CourierName = ""
riderInfo.CourierPhone = ""
}
if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 {
riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone)
}
if riderInfo.Longitude == "" { if riderInfo.Longitude == "" {
riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000) riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000)
} }
@@ -162,15 +143,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
case model.VendorIDJDShop: // 京东商城 case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城 case model.VendorIDWSC: // 微盟微商城
case model.VendorIDDD: // 抖店小时达 case model.VendorIDDD: // 抖店小时达
// 呼叫骑手的时候推送发货
// 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号!
riderInfo.ThirdCarrierOrderId = riderInfo.OrderId
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing tiktok rider information :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err)
}
}
default: default:
globals.SugarLogger.Errorf("Order source error, non system order") globals.SugarLogger.Errorf("Order source error, non system order")
return return
@@ -179,10 +151,50 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
return return
} }
func PullTiktokRiderInfo(param *mtpsapi.RiderInfo) { func PullTiktokRiderInfo(riderInfo *mtpsapi.RiderInfo) {
switch riderInfo.LogisticsStatus {
case 5: // 呼叫骑手
riderInfo.LogisticsStatus = 0
riderInfo.OpCode = tiktok_api.TiktokLogisticsStatusCALLRIDER
case 12: // 骑手接单
riderInfo.LogisticsStatus = 12
riderInfo.OpCode = tiktok_api.TiktokLogisticsORDERRECEIVED
case 15: // 到店
riderInfo.LogisticsStatus = 15
riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERARRIVED
case 20: //配送中
riderInfo.LogisticsStatus = 20
riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERPICKUP
case 110: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
case 105: // 完成
riderInfo.LogisticsStatus = 40
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
case 115: // 取消
riderInfo.CourierName = ""
riderInfo.CourierPhone = ""
riderInfo.LogisticsStatus = 100
riderInfo.OpCode = tiktok_api.TiktokLogisticsCANCELDELIVERY
case 22, 0, 120: // 异常配送
riderInfo.LogisticsStatus = 22
riderInfo.OpCode = tiktok_api.TiktokLogisticsINDDELIVERYEXCEPTION
}
if riderInfo.CourierPhone == "" {
riderInfo.CourierPhone = "18981810000"
}
if riderInfo.CourierName == "" {
riderInfo.CourierName = "暂无"
}
if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 {
riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone)
}
// 呼叫骑手的时候推送发货 // 呼叫骑手的时候推送发货
// 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! // 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号!
paramsMap := utils.Struct2Map(param, "", true) paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil {
if err := handler.GetOrderRider("", "", paramsMap); err != nil { if err := handler.GetOrderRider("", "", paramsMap); err != nil {
globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error()) globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error())