Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
邹宗楠
2023-06-02 17:15:36 +08:00
2 changed files with 55 additions and 19 deletions

View File

@@ -154,20 +154,25 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
} }
delivery.OnWaybillCreated(bill) delivery.OnWaybillCreated(bill)
//todo 模拟新运单回调 //todo 模拟新运单回调
OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{ if _, err = partner.CurOrderManager.LoadWaybill(sfOrderID, model.VendorIDSFPS); fmt.Sprintf("%s", err) == "找不到相应运单" {
ShopId: utils.Str2Float64(sfps2.SFShopStoreID), resp := OnWaybillMsg(sfps2.UrlIndexRiderStatus, sfps2.RiderStatus{
SFOrderID: sfOrderID, ShopId: utils.Str2Float64(sfps2.SFShopStoreID),
ShopOrderID: order.VendorOrderID, SFOrderID: sfOrderID,
UrlIndex: sfps2.UrlIndexRiderStatus, ShopOrderID: order.VendorOrderID,
OperatorName: "", UrlIndex: sfps2.UrlIndexRiderStatus,
OperatorPhone: "", OperatorName: "",
RiderLng: 0, OperatorPhone: "",
RiderLat: 0, RiderLng: 0,
OrderStatus: sfps2.OrderStatusNewOrder, RiderLat: 0,
StatusDesc: sfps2.OrderStatusNewOrderDesc, OrderStatus: sfps2.OrderStatusNewOrder,
SFUCode: "", StatusDesc: sfps2.OrderStatusNewOrderDesc,
PushTime: int(time.Now().Unix()), SFUCode: "",
}) PushTime: int(time.Now().Unix()),
})
if resp.ErrorCode != sfps2.SuccessCode {
err = fmt.Errorf("%v,%s", err, resp.ErrorMsg)
}
}
return bill, err return bill, err
} }
@@ -301,7 +306,17 @@ func (c *DeliveryHandler) UpdateWaybillTip(ctx *jxcontext.Context, vendorOrgCode
// OnWaybillMsg 配送状态更改回调 // OnWaybillMsg 配送状态更改回调
func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackResponse) { func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackResponse) {
order := GetWaybillByStatus(urlIndex, msg) 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) sfOrder, err := api.SfPsAPI.GetOrderStatus(order.VendorWaybillID)
if err != nil { if err != nil {
@@ -424,7 +439,7 @@ func OnWaybillExceptSF(msg *sfps2.RiderException) (retVal *sfps2.CallbackRespons
func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill { func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill {
waybill := &model.Waybill{} waybill := &model.Waybill{}
switch urlIndex { switch urlIndex {
case sfps2.UrlIndexRiderStatus, sfps2.UrlIndexSFCancel: case sfps2.UrlIndexRiderStatus:
retVal := msg.(sfps2.RiderStatus) retVal := msg.(sfps2.RiderStatus)
waybill = &model.Waybill{ waybill = &model.Waybill{
VendorWaybillID: retVal.SFOrderID, VendorWaybillID: retVal.SFOrderID,
@@ -466,6 +481,20 @@ func GetWaybillByStatus(urlIndex string, msg interface{}) *model.Waybill {
if retVal.PushTime == 0 { if retVal.PushTime == 0 {
waybill.StatusTime = time.Now() 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: default:
return nil return nil
} }

View File

@@ -1,8 +1,11 @@
package controllers package controllers
import ( import (
"fmt"
"net/http" "net/http"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/partner/delivery/sfps" "git.rosy.net.cn/jx-callback/business/partner/delivery/sfps"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
@@ -17,15 +20,19 @@ func (c *SFPSController) SfOrder() {
if c.Ctx.Input.Method() == http.MethodPost { if c.Ctx.Input.Method() == http.MethodPost {
msg, callbackResponse := api.SfPsAPI.GetCallbackUrlIndex(c.Ctx.Request) msg, callbackResponse := api.SfPsAPI.GetCallbackUrlIndex(c.Ctx.Request)
if callbackResponse.ErrorCode == -1 { if callbackResponse.ErrorCode == -1 {
c.Data["error_code"] = -1 c.Data["data"] = -1
c.ServeJSON() c.ServeJSON()
return return
} }
// 订单回调 // 订单回调
for k, v := range msg { for k, v := range msg {
callbackResponse = sfps.OnWaybillMsg(k, v) callbackResponse = sfps.OnWaybillMsg(k, v)
c.Data["error_code"] = callbackResponse c.Data["data"] = callbackResponse
c.ServeJSON() fmt.Printf("SfOrder callbackResponse=%s", utils.Format4Output(callbackResponse, false))
err := c.ServeJSON()
if err != nil {
fmt.Printf("serveJSON err=%v", err)
}
} }
} else { } else {
c.Abort("404") c.Abort("404")