From a9bc1c754714e312b682e74b2ae5f819f0e5e299 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 29 May 2023 14:43:36 +0800 Subject: [PATCH 1/7] test storeID --- business/partner/purchase/jx/localjx/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 4cc2b2d39..ce0742a09 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -1027,7 +1027,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 } } // ?????????????????????? 测试 - if storeDetail.ID == 668470 || storeDetail.ID == 668469 { + if storeDetail.ID == 668470 || storeDetail.ID == 668469 || storeDetail.ID == 800397 { outJxOrder.FreightPrice = 1 } From 46011c38d8fab8f950aba9bcbde176ed31a2aee0 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 29 May 2023 15:10:44 +0800 Subject: [PATCH 2/7] test storeID --- business/partner/delivery/sfps/waybill.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 80240e8a6..4c7626422 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -199,8 +199,11 @@ func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo price, err := api.SfPsAPI.PreCreateOrder(param) //+0.2 deliveryFee := utils.Float64TwoInt(price) + utils.WayBillDeliveryMarkUp - + globals.SugarLogger.Debugf("GetWaybillFee utils.Float64TwoInt(price)=%d", utils.Float64TwoInt(price)) + globals.SugarLogger.Debugf("GetWaybillFee utils.WayBillDeliveryMarkUp=%d", utils.WayBillDeliveryMarkUp) + globals.SugarLogger.Debugf("GetWaybillFee deliveryFee=%d", deliveryFee) deliveryFeeInfo.DeliveryFee = int64(deliveryFee) + globals.SugarLogger.Debugf("GetWaybillFee deliveryFeeInfo.DeliveryFee=%d", deliveryFeeInfo.DeliveryFee) return deliveryFeeInfo, err } From 8acdfdfa3071dbcfe9887efae62f6fdb4ab5cf3a Mon Sep 17 00:00:00 2001 From: richboo111 Date: Tue, 30 May 2023 10:32:12 +0800 Subject: [PATCH 3/7] 1 --- business/partner/delivery/sfps/waybill.go | 92 ++++++++++++++++++----- controllers/sfps_callback.go | 11 +-- 2 files changed, 81 insertions(+), 22 deletions(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 4c7626422..2e2a76b10 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -276,33 +276,38 @@ func (d DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeison } // OnWaybillMsg 配送状态更改回调 -func OnWaybillMsg(msg *sfps2.RiderStatus) (resp *sfps2.CallbackResponse) { +func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackResponse) { + order := GetWaybillByStatus(urlIndex, msg) + //order := &model.Waybill{ + // VendorWaybillID: msg.SFOrderID, + // WaybillVendorID: model.VendorIDSFPS, + // VendorOrderID: msg.ShopOrderID, + // CourierName: msg.OperatorName, + // CourierMobile: msg.OperatorPhone, + // VendorStatus: utils.Int2Str(msg.OrderStatus), + // StatusTime: utils.Timestamp2Time(int64(msg.PushTime)), + // Remark: msg.StatusDesc, + //} - order := &model.Waybill{ - VendorWaybillID: msg.SFOrderID, - WaybillVendorID: model.VendorIDSFPS, - VendorOrderID: msg.ShopOrderID, - CourierName: msg.OperatorName, - CourierMobile: msg.OperatorPhone, - VendorStatus: utils.Int2Str(msg.OrderStatus), - StatusTime: utils.Timestamp2Time(int64(msg.PushTime)), - Remark: msg.StatusDesc, - } - if msg.PushTime == 0 { - order.StatusTime = time.Now() - } //获取实时订单信息 - sfOrder, err := api.SfPsAPI.GetOrderStatus(msg.SFOrderID) + sfOrder, err := api.SfPsAPI.GetOrderStatus(order.VendorWaybillID) if err != nil { return sfps2.Err2CallbackResponse(err) } + if order.CourierMobile == "" { + order.CourierName = sfOrder.RiderName + } + if order.CourierName == "" { + order.CourierMobile = sfOrder.RiderPhone + } + //+0.2 sfTotalPrice := utils.Float64TwoInt(sfOrder.TotalPrice) + utils.WayBillDeliveryMarkUp sfActualPrice := utils.Float64TwoInt64(sfOrder.RealPayMoney) var good *model.GoodsOrder sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` - sqlParams := []interface{}{msg.ShopOrderID} + sqlParams := []interface{}{order.VendorOrderID} dao.GetRow(dao.GetDB(), &good, sql, sqlParams) order.OrderVendorID = good.VendorID @@ -325,7 +330,7 @@ func OnWaybillMsg(msg *sfps2.RiderStatus) (resp *sfps2.CallbackResponse) { case sfps2.OrderStatusFinished: order.DesiredFee = int64(sfTotalPrice) order.Status = model.WaybillStatusDelivered - case sfps2.OrderStatusOrderCancel: + case sfps2.OrderStatusOrderCancel, sfps2.OrderStatusRiderCancel: order.Status = model.WaybillStatusCanceled case sfps2.OrderStatusError: order.Status = model.WaybillStatusDeliverFailed // 22 @@ -399,6 +404,59 @@ func OnWaybillExceptSF(msg *sfps2.RiderException) (retVal *sfps2.CallbackRespons return retVal } +// GetWaybillByStatus 根据orderStatus 获取waybill结构 +func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill { + waybill := &model.Waybill{} + switch urlIndex { + case sfps2.UrlIndexRiderStatus, sfps2.UrlIndexSFCancel: + retVal := msg.(sfps2.RiderStatus) + waybill = &model.Waybill{ + VendorWaybillID: retVal.SFOrderID, + WaybillVendorID: model.VendorIDSFPS, + VendorOrderID: retVal.ShopOrderID, + CourierName: retVal.OperatorName, + CourierMobile: retVal.OperatorPhone, + VendorStatus: utils.Int2Str(retVal.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(retVal.PushTime)), + Remark: retVal.StatusDesc, + } + if retVal.PushTime == 0 { + waybill.StatusTime = time.Now() + } + case sfps2.UrlIndexRiderRecall: + retVal := msg.(sfps2.RiderRecall) + waybill = &model.Waybill{ + VendorWaybillID: retVal.SFOrderID, + WaybillVendorID: model.VendorIDSFPS, + VendorOrderID: retVal.ShopOrderID, + VendorStatus: utils.Int2Str(retVal.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(retVal.PushTime)), + Remark: retVal.StatusDesc, + } + if retVal.PushTime == 0 { + waybill.StatusTime = time.Now() + } + case sfps2.UrlIndexOrderComplete: + retVal := msg.(sfps2.OrderComplete) + waybill = &model.Waybill{ + VendorWaybillID: retVal.SFOrderID, + WaybillVendorID: model.VendorIDSFPS, + VendorOrderID: retVal.ShopOrderID, + CourierName: retVal.OperatorName, + VendorStatus: utils.Int2Str(retVal.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(retVal.PushTime)), + Remark: retVal.StatusDesc, + } + if retVal.PushTime == 0 { + waybill.StatusTime = time.Now() + } + default: + return nil + } + + return waybill +} + // GetVendorSource 辅助函数 //获取订单来源标识符 func GetVendorSource(vendorID int) (source string) { diff --git a/controllers/sfps_callback.go b/controllers/sfps_callback.go index 002c7476e..5c1617256 100644 --- a/controllers/sfps_callback.go +++ b/controllers/sfps_callback.go @@ -15,16 +15,18 @@ type SFPSController struct { func (c *SFPSController) SfOrder() { if c.Ctx.Input.Method() == http.MethodPost { - msg, callbackResponse := api.SfPsAPI.GetRiderStatusCallback(c.Ctx.Request) + msg, callbackResponse := api.SfPsAPI.GetCallbackUrlIndex(c.Ctx.Request) if callbackResponse.ErrorCode == -1 { c.Data["error_code"] = -1 c.ServeJSON() return } // 订单回调 - callbackResponse = sfps.OnWaybillMsg(msg) - c.Data["error_code"] = callbackResponse - c.ServeJSON() + for k, v := range msg { + callbackResponse = sfps.OnWaybillMsg(k, v) + c.Data["error_code"] = callbackResponse + c.ServeJSON() + } } else { c.Abort("404") } @@ -32,7 +34,6 @@ func (c *SFPSController) SfOrder() { // SfAbnormal 异常回调 func (c *FnController) SfAbnormal() { - if c.Ctx.Input.Method() == http.MethodPost { msg, callbackResponse := api.SfPsAPI.GetRiderExceptionCallback(c.Ctx.Request) if callbackResponse.ErrorCode == -1 { From 11cfe97b3d146ae77f280af92c90b35f53aa8331 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Tue, 30 May 2023 10:46:18 +0800 Subject: [PATCH 4/7] 1 --- business/partner/delivery/sfps/waybill.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 2e2a76b10..ab98fc62e 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -198,11 +198,8 @@ func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo deliveryFeeInfo = &partner.WaybillFeeInfo{} price, err := api.SfPsAPI.PreCreateOrder(param) //+0.2 - deliveryFee := utils.Float64TwoInt(price) + utils.WayBillDeliveryMarkUp - globals.SugarLogger.Debugf("GetWaybillFee utils.Float64TwoInt(price)=%d", utils.Float64TwoInt(price)) - globals.SugarLogger.Debugf("GetWaybillFee utils.WayBillDeliveryMarkUp=%d", utils.WayBillDeliveryMarkUp) - globals.SugarLogger.Debugf("GetWaybillFee deliveryFee=%d", deliveryFee) - deliveryFeeInfo.DeliveryFee = int64(deliveryFee) + //deliveryFee := utils.Float64TwoInt(price) + utils.WayBillDeliveryMarkUp + deliveryFeeInfo.DeliveryFee = utils.Float64TwoInt64(price) globals.SugarLogger.Debugf("GetWaybillFee deliveryFeeInfo.DeliveryFee=%d", deliveryFeeInfo.DeliveryFee) return deliveryFeeInfo, err } @@ -304,6 +301,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons //+0.2 sfTotalPrice := utils.Float64TwoInt(sfOrder.TotalPrice) + utils.WayBillDeliveryMarkUp sfActualPrice := utils.Float64TwoInt64(sfOrder.RealPayMoney) + globals.SugarLogger.Debugf("SFPS OnWaybillMsg,sfTotalPrice=%d,sfActualPrice=%d", sfTotalPrice, sfActualPrice) var good *model.GoodsOrder sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` From d317976ca1278ad1a721564ebbe0b52b4c62f5f7 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Tue, 30 May 2023 10:49:57 +0800 Subject: [PATCH 5/7] 1 --- business/partner/delivery/sfps/waybill.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index ab98fc62e..621d5d62a 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -97,10 +97,13 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i } param := &sfps2.CreateOrderReq{ - ShopId: sfps2.SFShopStoreID, - ShopOrderId: order.VendorOrderID, - OrderSource: GetVendorSource(order.VendorID), - OrderTime: order.CreatedAt.Unix(), + ShopId: sfps2.SFShopStoreID, + ShopOrderId: order.VendorOrderID, + OrderSource: GetVendorSource(order.VendorID), + OrderTime: order.CreatedAt.Unix(), + ShopType: sfps2.OrderTypeSF, + LbsType: sfps2.LbsTypeGD, + RiderPickMethod: sfps2.RiderPickUpMethodSTU, Receive: &sfps2.ReceiveAddress{ UserName: order.ConsigneeName, UserPhone: order.ConsigneeMobile, From 8d8bd02dc77b467041114b12138dd5a07a23b8c5 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Tue, 30 May 2023 11:07:01 +0800 Subject: [PATCH 6/7] 1 --- business/partner/delivery/sfps/waybill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 621d5d62a..14ec59fe7 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -148,7 +148,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i OrderVendorID: order.VendorID, VendorWaybillID: sfOrderID, VendorWaybillID2: sfBillID, - WaybillVendorID: model.VendorIDFengNiao, + WaybillVendorID: model.VendorIDSFPS, DesiredFee: int64(desiredFee), ActualFee: utils.Float64TwoInt64(sfReallyPrice), } From 69183b48020eca470bea2344f7d0f53d0511318d Mon Sep 17 00:00:00 2001 From: richboo111 Date: Tue, 30 May 2023 11:15:46 +0800 Subject: [PATCH 7/7] 1 --- business/partner/delivery/sfps/waybill.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 14ec59fe7..4310940d1 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -294,6 +294,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons if err != nil { return sfps2.Err2CallbackResponse(err) } + globals.SugarLogger.Debugf("SFPS OnWaybillMsg sfOrder=%s", utils.Format4Output(sfOrder, false)) if order.CourierMobile == "" { order.CourierName = sfOrder.RiderName } @@ -339,6 +340,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg) } + globals.SugarLogger.Debugf("SFPS OnWaybillMsg order=%s", utils.Format4Output(order, false)) if err := partner.CurOrderManager.OnWaybillStatusChanged(order); err != nil { return sfps2.Err2CallbackResponse(err) }