From 24e92bb70c934d125e9479b5eaf1a5db2d6315a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 4 Nov 2022 21:06:40 +0800 Subject: [PATCH] 1 --- business/partner/delivery/dada/waybill.go | 44 +++++++++++++- business/partner/delivery/rider.go | 72 +++++++++++++---------- 2 files changed, 83 insertions(+), 33 deletions(-) diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index c1b86c3c1..75c67ae9b 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -99,7 +99,9 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status)) defer func(order *model.Waybill) { delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 - delivery.PullTiktokRiderInfo(&mtpsapi.RiderInfo{ + }(order) + if order.OrderVendorID == model.VendorIDDD { + result := &mtpsapi.RiderInfo{ OrderId: order.VendorOrderID, ThirdCarrierOrderId: order.VendorOrderID, CourierName: order.CourierName, @@ -107,8 +109,44 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap LogisticsProviderCode: "10002", LogisticsStatus: order.Status, 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 } diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 5f5fff57f..c28c970eb 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -86,17 +86,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { riderInfo.CourierName = "石锋" riderInfo.CourierPhone = "18048531223" 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 @@ -131,14 +120,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { 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 == "" { riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000) } @@ -162,15 +143,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { case model.VendorIDJDShop: // 京东商城 case model.VendorIDWSC: // 微盟微商城 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: globals.SugarLogger.Errorf("Order source error, non system order") return @@ -179,10 +151,50 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { 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已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! - paramsMap := utils.Struct2Map(param, "", true) + paramsMap := utils.Struct2Map(riderInfo, "", true) if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { if err := handler.GetOrderRider("", "", paramsMap); err != nil { globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error())