Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop
This commit is contained in:
@@ -97,10 +97,13 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
|
|||||||
}
|
}
|
||||||
|
|
||||||
param := &sfps2.CreateOrderReq{
|
param := &sfps2.CreateOrderReq{
|
||||||
ShopId: sfps2.SFShopStoreID,
|
ShopId: sfps2.SFShopStoreID,
|
||||||
ShopOrderId: order.VendorOrderID,
|
ShopOrderId: order.VendorOrderID,
|
||||||
OrderSource: GetVendorSource(order.VendorID),
|
OrderSource: GetVendorSource(order.VendorID),
|
||||||
OrderTime: order.CreatedAt.Unix(),
|
OrderTime: order.CreatedAt.Unix(),
|
||||||
|
ShopType: sfps2.OrderTypeSF,
|
||||||
|
LbsType: sfps2.LbsTypeGD,
|
||||||
|
RiderPickMethod: sfps2.RiderPickUpMethodSTU,
|
||||||
Receive: &sfps2.ReceiveAddress{
|
Receive: &sfps2.ReceiveAddress{
|
||||||
UserName: order.ConsigneeName,
|
UserName: order.ConsigneeName,
|
||||||
UserPhone: order.ConsigneeMobile,
|
UserPhone: order.ConsigneeMobile,
|
||||||
@@ -145,7 +148,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
|
|||||||
OrderVendorID: order.VendorID,
|
OrderVendorID: order.VendorID,
|
||||||
VendorWaybillID: sfOrderID,
|
VendorWaybillID: sfOrderID,
|
||||||
VendorWaybillID2: sfBillID,
|
VendorWaybillID2: sfBillID,
|
||||||
WaybillVendorID: model.VendorIDFengNiao,
|
WaybillVendorID: model.VendorIDSFPS,
|
||||||
DesiredFee: int64(desiredFee),
|
DesiredFee: int64(desiredFee),
|
||||||
ActualFee: utils.Float64TwoInt64(sfReallyPrice),
|
ActualFee: utils.Float64TwoInt64(sfReallyPrice),
|
||||||
}
|
}
|
||||||
@@ -198,9 +201,9 @@ func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo
|
|||||||
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
||||||
price, err := api.SfPsAPI.PreCreateOrder(param)
|
price, err := api.SfPsAPI.PreCreateOrder(param)
|
||||||
//+0.2
|
//+0.2
|
||||||
deliveryFee := utils.Float64TwoInt(price) + utils.WayBillDeliveryMarkUp
|
//deliveryFee := utils.Float64TwoInt(price) + utils.WayBillDeliveryMarkUp
|
||||||
|
deliveryFeeInfo.DeliveryFee = utils.Float64TwoInt64(price)
|
||||||
deliveryFeeInfo.DeliveryFee = int64(deliveryFee)
|
globals.SugarLogger.Debugf("GetWaybillFee deliveryFeeInfo.DeliveryFee=%d", deliveryFeeInfo.DeliveryFee)
|
||||||
return deliveryFeeInfo, err
|
return deliveryFeeInfo, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,33 +276,40 @@ func (d DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeison
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OnWaybillMsg 配送状态更改回调
|
// 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 {
|
if err != nil {
|
||||||
return sfps2.Err2CallbackResponse(err)
|
return sfps2.Err2CallbackResponse(err)
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("SFPS OnWaybillMsg sfOrder=%s", utils.Format4Output(sfOrder, false))
|
||||||
|
if order.CourierMobile == "" {
|
||||||
|
order.CourierName = sfOrder.RiderName
|
||||||
|
}
|
||||||
|
if order.CourierName == "" {
|
||||||
|
order.CourierMobile = sfOrder.RiderPhone
|
||||||
|
}
|
||||||
|
|
||||||
//+0.2
|
//+0.2
|
||||||
sfTotalPrice := utils.Float64TwoInt(sfOrder.TotalPrice) + utils.WayBillDeliveryMarkUp
|
sfTotalPrice := utils.Float64TwoInt(sfOrder.TotalPrice) + utils.WayBillDeliveryMarkUp
|
||||||
sfActualPrice := utils.Float64TwoInt64(sfOrder.RealPayMoney)
|
sfActualPrice := utils.Float64TwoInt64(sfOrder.RealPayMoney)
|
||||||
|
globals.SugarLogger.Debugf("SFPS OnWaybillMsg,sfTotalPrice=%d,sfActualPrice=%d", sfTotalPrice, sfActualPrice)
|
||||||
|
|
||||||
var good *model.GoodsOrder
|
var good *model.GoodsOrder
|
||||||
sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0`
|
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)
|
dao.GetRow(dao.GetDB(), &good, sql, sqlParams)
|
||||||
order.OrderVendorID = good.VendorID
|
order.OrderVendorID = good.VendorID
|
||||||
|
|
||||||
@@ -322,7 +332,7 @@ func OnWaybillMsg(msg *sfps2.RiderStatus) (resp *sfps2.CallbackResponse) {
|
|||||||
case sfps2.OrderStatusFinished:
|
case sfps2.OrderStatusFinished:
|
||||||
order.DesiredFee = int64(sfTotalPrice)
|
order.DesiredFee = int64(sfTotalPrice)
|
||||||
order.Status = model.WaybillStatusDelivered
|
order.Status = model.WaybillStatusDelivered
|
||||||
case sfps2.OrderStatusOrderCancel:
|
case sfps2.OrderStatusOrderCancel, sfps2.OrderStatusRiderCancel:
|
||||||
order.Status = model.WaybillStatusCanceled
|
order.Status = model.WaybillStatusCanceled
|
||||||
case sfps2.OrderStatusError:
|
case sfps2.OrderStatusError:
|
||||||
order.Status = model.WaybillStatusDeliverFailed // 22
|
order.Status = model.WaybillStatusDeliverFailed // 22
|
||||||
@@ -330,6 +340,7 @@ func OnWaybillMsg(msg *sfps2.RiderStatus) (resp *sfps2.CallbackResponse) {
|
|||||||
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
|
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 {
|
if err := partner.CurOrderManager.OnWaybillStatusChanged(order); err != nil {
|
||||||
return sfps2.Err2CallbackResponse(err)
|
return sfps2.Err2CallbackResponse(err)
|
||||||
}
|
}
|
||||||
@@ -396,6 +407,59 @@ func OnWaybillExceptSF(msg *sfps2.RiderException) (retVal *sfps2.CallbackRespons
|
|||||||
return retVal
|
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 辅助函数
|
// GetVendorSource 辅助函数
|
||||||
//获取订单来源标识符
|
//获取订单来源标识符
|
||||||
func GetVendorSource(vendorID int) (source string) {
|
func GetVendorSource(vendorID int) (source string) {
|
||||||
|
|||||||
@@ -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
|
outJxOrder.FreightPrice = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,16 +15,18 @@ type SFPSController struct {
|
|||||||
|
|
||||||
func (c *SFPSController) SfOrder() {
|
func (c *SFPSController) SfOrder() {
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
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 {
|
if callbackResponse.ErrorCode == -1 {
|
||||||
c.Data["error_code"] = -1
|
c.Data["error_code"] = -1
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 订单回调
|
// 订单回调
|
||||||
callbackResponse = sfps.OnWaybillMsg(msg)
|
for k, v := range msg {
|
||||||
c.Data["error_code"] = callbackResponse
|
callbackResponse = sfps.OnWaybillMsg(k, v)
|
||||||
c.ServeJSON()
|
c.Data["error_code"] = callbackResponse
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
c.Abort("404")
|
c.Abort("404")
|
||||||
}
|
}
|
||||||
@@ -32,7 +34,6 @@ func (c *SFPSController) SfOrder() {
|
|||||||
|
|
||||||
// SfAbnormal 异常回调
|
// SfAbnormal 异常回调
|
||||||
func (c *FnController) SfAbnormal() {
|
func (c *FnController) SfAbnormal() {
|
||||||
|
|
||||||
if c.Ctx.Input.Method() == http.MethodPost {
|
if c.Ctx.Input.Method() == http.MethodPost {
|
||||||
msg, callbackResponse := api.SfPsAPI.GetRiderExceptionCallback(c.Ctx.Request)
|
msg, callbackResponse := api.SfPsAPI.GetRiderExceptionCallback(c.Ctx.Request)
|
||||||
if callbackResponse.ErrorCode == -1 {
|
if callbackResponse.ErrorCode == -1 {
|
||||||
|
|||||||
Reference in New Issue
Block a user