From f47772afb42e8528b444bc13a0fe4d48d6bcf45b Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 2 Jun 2023 15:31:54 +0800 Subject: [PATCH 1/4] 1 --- business/partner/delivery/sfps/waybill.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 090afb0b9..78306ba6d 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -154,7 +154,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i } delivery.OnWaybillCreated(bill) //todo 模拟新运单回调 - OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ + resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ ShopId: utils.Str2Float64(sfps2.SFShopStoreID), SFOrderID: sfOrderID, ShopOrderID: order.VendorOrderID, @@ -168,6 +168,9 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i SFUCode: "", PushTime: int(time.Now().Unix()), }) + if resp.ErrorCode != sfps2.SuccessCode { + err = fmt.Errorf("%v,%s", err, resp.ErrorMsg) + } return bill, err } @@ -424,7 +427,7 @@ func OnWaybillExceptSF(msg *sfps2.RiderException) (retVal *sfps2.CallbackRespons func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill { waybill := &model.Waybill{} switch urlIndex { - case sfps2.UrlIndexRiderStatus, sfps2.UrlIndexSFCancel: + case sfps2.UrlIndexRiderStatus: retVal := msg.(sfps2.RiderStatus) waybill = &model.Waybill{ VendorWaybillID: retVal.SFOrderID, @@ -466,6 +469,20 @@ func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill { if retVal.PushTime == 0 { waybill.StatusTime = time.Now() } + case sfps2.UrlIndexSFCancel: + retVal := msg.(sfps2.SFCancel) + waybill = &model.Waybill{ + VendorWaybillID: retVal.SFOrderID, + WaybillVendorID: model.VendorIDSFPS, + VendorOrderID: retVal.ShopOrderID, + CourierName: retVal.OperatorName, + VendorStatus: utils.Float64ToStr(retVal.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(retVal.PushTime)), + Remark: retVal.StatusDesc, + } + if retVal.PushTime == 0 { + waybill.StatusTime = time.Now() + } default: return nil } From 674ce417d0037cd2c7bbca3c20f7ad8a2491327a Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 2 Jun 2023 15:36:59 +0800 Subject: [PATCH 2/4] 1 --- controllers/sfps_callback.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/sfps_callback.go b/controllers/sfps_callback.go index 5c1617256..486db47f3 100644 --- a/controllers/sfps_callback.go +++ b/controllers/sfps_callback.go @@ -24,7 +24,8 @@ func (c *SFPSController) SfOrder() { // 订单回调 for k, v := range msg { callbackResponse = sfps.OnWaybillMsg(k, v) - c.Data["error_code"] = callbackResponse + c.Data["error_code"] = callbackResponse.ErrorCode + c.Data["error_msg"] = callbackResponse.ErrorCode c.ServeJSON() } } else { From 80fdd232c37a390c81c76ae4b6acf671c7a0a7ef Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 2 Jun 2023 16:23:17 +0800 Subject: [PATCH 3/4] 1 --- business/partner/delivery/sfps/waybill.go | 46 ++++++++++++++--------- controllers/sfps_callback.go | 14 +++++-- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go index 78306ba6d..69ebb27ea 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -154,22 +154,24 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i } delivery.OnWaybillCreated(bill) //todo 模拟新运单回调 - resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ - ShopId: utils.Str2Float64(sfps2.SFShopStoreID), - SFOrderID: sfOrderID, - ShopOrderID: order.VendorOrderID, - UrlIndex: sfps2.UrlIndexRiderStatus, - OperatorName: "", - OperatorPhone: "", - RiderLng: 0, - RiderLat: 0, - OrderStatus: sfps2.OrderStatusNewOrder, - StatusDesc: sfps2.OrderStatusNewOrderDesc, - SFUCode: "", - PushTime: int(time.Now().Unix()), - }) - if resp.ErrorCode != sfps2.SuccessCode { - err = fmt.Errorf("%v,%s", err, resp.ErrorMsg) + if _, err = partner.CurOrderManager.LoadWaybill(sfOrderID, model.VendorIDSFPS); err == errors.New("找不到相应运单") { + resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ + ShopId: utils.Str2Float64(sfps2.SFShopStoreID), + SFOrderID: sfOrderID, + ShopOrderID: order.VendorOrderID, + UrlIndex: sfps2.UrlIndexRiderStatus, + OperatorName: "", + OperatorPhone: "", + RiderLng: 0, + RiderLat: 0, + OrderStatus: sfps2.OrderStatusNewOrder, + StatusDesc: sfps2.OrderStatusNewOrderDesc, + SFUCode: "", + PushTime: int(time.Now().Unix()), + }) + if resp.ErrorCode != sfps2.SuccessCode { + err = fmt.Errorf("%v,%s", err, resp.ErrorMsg) + } } return bill, err } @@ -304,7 +306,17 @@ func (c *DeliveryHandler) UpdateWaybillTip(ctx *jxcontext.Context, vendorOrgCode // OnWaybillMsg 配送状态更改回调 func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackResponse) { order := GetWaybillByStatus(urlIndex, msg) - + //多次取消回调只取第一次 + tempStatus := utils.Str2Int(order.VendorStatus) + if tempStatus == sfps2.OrderStatusOrderCancel || tempStatus == sfps2.OrderStatusRiderCancel { + bill, err := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, model.VendorIDSFPS) + if err != nil { + return sfps2.Err2CallbackResponse(err) + } + if bill.Status == model.OrderStatusCanceled { + return sfps2.Err2CallbackResponse(nil) + } + } //获取实时订单信息 sfOrder, err := api.SfPsAPI.GetOrderStatus(order.VendorWaybillID) if err != nil { diff --git a/controllers/sfps_callback.go b/controllers/sfps_callback.go index 486db47f3..232355efc 100644 --- a/controllers/sfps_callback.go +++ b/controllers/sfps_callback.go @@ -1,8 +1,11 @@ package controllers import ( + "fmt" "net/http" + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/partner/delivery/sfps" "git.rosy.net.cn/jx-callback/globals/api" @@ -17,16 +20,19 @@ func (c *SFPSController) SfOrder() { if c.Ctx.Input.Method() == http.MethodPost { msg, callbackResponse := api.SfPsAPI.GetCallbackUrlIndex(c.Ctx.Request) if callbackResponse.ErrorCode == -1 { - c.Data["error_code"] = -1 + c.Data["data"] = -1 c.ServeJSON() return } // 订单回调 for k, v := range msg { callbackResponse = sfps.OnWaybillMsg(k, v) - c.Data["error_code"] = callbackResponse.ErrorCode - c.Data["error_msg"] = callbackResponse.ErrorCode - c.ServeJSON() + c.Data["data"] = callbackResponse + fmt.Printf("SfOrder callbackResponse=%s", utils.Format4Output(callbackResponse, false)) + err := c.ServeJSON() + if err != nil { + fmt.Printf("serveJSON err=%v", err) + } } } else { c.Abort("404") From f13b1a1d3bd8f4b8ad3bd1bead5ce98ae3637363 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 2 Jun 2023 17:10:30 +0800 Subject: [PATCH 4/4] 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 69ebb27ea..e90594724 100644 --- a/business/partner/delivery/sfps/waybill.go +++ b/business/partner/delivery/sfps/waybill.go @@ -154,7 +154,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i } delivery.OnWaybillCreated(bill) //todo 模拟新运单回调 - if _, err = partner.CurOrderManager.LoadWaybill(sfOrderID, model.VendorIDSFPS); err == errors.New("找不到相应运单") { + if _, err = partner.CurOrderManager.LoadWaybill(sfOrderID, model.VendorIDSFPS); fmt.Sprintf("%s", err) == "找不到相应运单" { resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ ShopId: utils.Str2Float64(sfps2.SFShopStoreID), SFOrderID: sfOrderID,