From 068fad6253fdf6c3bccfbb4215caeb57a9cbb2c5 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 10 May 2019 18:16:13 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E9=A5=BF=E7=99=BE=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=8D=95=20-=20=E5=94=AE=E5=90=8E=E5=8D=95=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=B8=80=E4=B8=8B=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order_afs.go | 23 ++- business/model/order_financial.go | 2 +- business/partner/purchase/ebai/callback.go | 6 +- business/partner/purchase/ebai/financial.go | 20 ++- .../partner/purchase/ebai/financial_test.go | 2 +- business/partner/purchase/ebai/order.go | 58 +++--- business/partner/purchase/ebai/order_afs.go | 167 ++++++++++++++++++ business/partner/purchase/jd/callback.go | 22 +-- business/partner/purchase/jd/financial.go | 9 +- business/partner/purchase/jd/order.go | 4 +- business/partner/purchase/jd/store.go | 2 +- controllers/jd_callback.go | 10 +- 12 files changed, 251 insertions(+), 74 deletions(-) diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 25c3d6939..eb57c9f8a 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -245,13 +245,26 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af return nil } -func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, order *model.AfsOrder) (err error) { - globals.SugarLogger.Debugf("updateAfsOrderOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID) - if storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, 0); err == nil { - order.JxStoreID = storeDetail.Store.ID +func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, afsOrder *model.AfsOrder) (err error) { + globals.SugarLogger.Debugf("updateAfsOrderOtherInfo orderID:%s, VendorStoreID:%s", afsOrder.VendorOrderID, afsOrder.VendorStoreID) + if afsOrder.VendorStoreID != "" { + if storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, afsOrder.VendorStoreID, 0); err == nil { + afsOrder.JxStoreID = storeDetail.Store.ID + } + } + if afsOrder.StoreID == 0 && afsOrder.JxStoreID == 0 { + if order, err2 := c.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID); err2 == nil { + afsOrder.JxStoreID = order.JxStoreID + if afsOrder.StoreID == 0 { + afsOrder.StoreID = order.StoreID + } + if afsOrder.VendorStoreID == "" { + afsOrder.VendorStoreID = order.VendorStoreID + } + } } if err == nil { - if err = c.updateAfsOrderSkuOtherInfo(db, order); err == nil { + if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err == nil { } } diff --git a/business/model/order_financial.go b/business/model/order_financial.go index bdb027882..d66d7ce7c 100644 --- a/business/model/order_financial.go +++ b/business/model/order_financial.go @@ -118,7 +118,7 @@ type OrderSkuFinancial struct { VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID VendorOrderID2 string `orm:"column(vendor_order_id2);size(48);index" json:"vendorOrderID2"` // 关联原始订单ID2,饿百独有 - AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID + AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单 // ConfirmTime time.Time `orm:"type(datetime)" json:"confirmTime"` // 订单生成/完成时间 diff --git a/business/partner/purchase/ebai/callback.go b/business/partner/purchase/ebai/callback.go index e272675c9..b041d5165 100644 --- a/business/partner/purchase/ebai/callback.go +++ b/business/partner/purchase/ebai/callback.go @@ -19,10 +19,8 @@ func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse } }, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDEBAI)) } - if msg.Cmd == ebaiapi.CmdOrderPartRefund || msg.Cmd == ebaiapi.CmdOrderUserCancel || msg.Cmd == ebaiapi.CmdOrderDeliveryStatus { - utils.CallFuncAsync(func() { - OnFinancialMsg(msg) - }) + if /*msg.Cmd == ebaiapi.CmdOrderPartRefund || msg.Cmd == ebaiapi.CmdOrderUserCancel || */ msg.Cmd == ebaiapi.CmdOrderDeliveryStatus { + response = CurPurchaseHandler.OnFinancialMsg(msg) } else if msg.Cmd == ebaiapi.CmdShopMsgPush { response = CurPurchaseHandler.onShopMsgPush(msg) } diff --git a/business/partner/purchase/ebai/financial.go b/business/partner/purchase/ebai/financial.go index 2260d5c4c..582505dfc 100644 --- a/business/partner/purchase/ebai/financial.go +++ b/business/partner/purchase/ebai/financial.go @@ -9,22 +9,30 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" ) +func (p *PurchaseHandler) OnFinancialMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) { + utils.CallFuncAsync(func() { + response = p.onFinancialMsg(msg) + }) + return response +} + // 存储饿百退款订单结账信息 -func OnFinancialMsg(msg *ebaiapi.CallbackMsg) (err error) { +func (p *PurchaseHandler) onFinancialMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) { + var err error if msg.Cmd == ebaiapi.CmdOrderPartRefund { // 部分退款处理 - if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) == ebaiapi.OrderPartRefundSuccess { + if int(utils.MustInterface2Int64(msg.Body["status"])) == ebaiapi.OrderPartRefundSuccess { // 获取到部分退款订单id afsOrderID := GetOrderIDFromMsg(msg) // 处理部分退款信息 - orderData, err2 := api.EbaiAPI.OrderPartrefundGet(afsOrderID) + orderData, err2 := api.EbaiAPI.OrderPartRefundGet(afsOrderID) if err = err2; err == nil { afsOrder := CurPurchaseHandler.AfsOrderDetail2Financial(orderData) err = partner.CurOrderManager.SaveAfsOrderFinancialInfo(afsOrder) } } } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { // 全额退款处理 - messageType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"])) - if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"])) == ebaiapi.OrderUserCancelTypeAfterSale && + messageType := int(utils.MustInterface2Int64(msg.Body["type"])) + if int(utils.MustInterface2Int64(msg.Body["cancel_type"])) == ebaiapi.OrderUserCancelTypeAfterSale && (messageType == ebaiapi.OrderUserCancelCSAgreed || messageType == ebaiapi.OrderUserCancelMerchantAgreed) { afsOrderID := GetOrderIDFromMsg(msg) // 获得退款订单ID,去本地数据库拿?饿百消息推送只给了订单号,但是没有查询全额退款的接口,只有部分退款才可以查询 @@ -45,7 +53,7 @@ func OnFinancialMsg(msg *ebaiapi.CallbackMsg) (err error) { } } } - return err + return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, msg.Cmd) } func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.OrderFinancial, msg *ebaiapi.CallbackMsg) (afsOrder *model.AfsOrder) { diff --git a/business/partner/purchase/ebai/financial_test.go b/business/partner/purchase/ebai/financial_test.go index 723ec6e75..abb48c87d 100644 --- a/business/partner/purchase/ebai/financial_test.go +++ b/business/partner/purchase/ebai/financial_test.go @@ -27,7 +27,7 @@ func TestOnFinancialMsg(t *testing.T) { // msg.Body["type"] = json.Number("40") // msg.Body["cancel_type"] = json.Number("2") - res := OnFinancialMsg(msg) + res := CurPurchaseHandler.OnFinancialMsg(msg) fmt.Println(res) } diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index baff49895..e70d8c564 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -82,7 +82,7 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode if taskID == 1 { result1, err1 = api.EbaiAPI.OrderGet(vendorOrderID) } else if taskID == 2 { - result2, err2 = api.EbaiAPI.OrderPartrefundGet(vendorOrderID) + result2, err2 = api.EbaiAPI.OrderPartRefundGet(vendorOrderID) } return nil, nil }, taskIDs) @@ -295,22 +295,26 @@ func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName // func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.CallbackResponse) { - if ebaiapi.CmdOrderCreate == msg.Cmd { - retVal = c.onOrderNew(msg) + if c.isAfsMsg(msg) { + retVal = c.OnAfsOrderMsg(msg) } else { - status := c.callbackMsg2Status(msg) - var err error - if status != nil { - if status.Status == model.OrderStatusAdjust { - var order *model.GoodsOrder - if order, err = c.GetOrder4PartRefund(GetOrderIDFromMsg(msg)); err == nil { - err = partner.CurOrderManager.OnOrderAdjust(order, status) + if ebaiapi.CmdOrderCreate == msg.Cmd { + retVal = c.onOrderNew(msg) + } else { + var err error + status := c.callbackMsg2Status(msg) + if status != nil { + if status.Status == model.OrderStatusAdjust { + var order *model.GoodsOrder + if order, err = c.GetOrder4PartRefund(GetOrderIDFromMsg(msg)); err == nil { + err = partner.CurOrderManager.OnOrderAdjust(order, status) + } + } else { + err = partner.CurOrderManager.OnOrderStatusChanged(status) } - } else { - err = partner.CurOrderManager.OnOrderStatusChanged(status) } + retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) } - retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) } return retVal } @@ -342,13 +346,10 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta VendorStatus: msg.Cmd, } if msg.Cmd == ebaiapi.CmdOrderUserCancel { - msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"])) - cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"])) - orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"]) - orderStatus.VendorStatus = msg.Cmd + "-" + msgType - if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { - orderStatus.Remark += ",额外原因:" + additionReason - } + msgType := int(utils.MustInterface2Int64(msg.Body["type"])) + cancelType := int(utils.MustInterface2Int64(msg.Body["cancel_type"])) + orderStatus.Remark = buildFullReason(utils.Interface2String(msg.Body["cancel_reason"]), utils.Interface2String(msg.Body["addition_reason"])) + orderStatus.VendorStatus = msg.Cmd + "-" + utils.Int2Str(msgType) if cancelType == ebaiapi.OrderUserCancelTypeBeforeSale { if msgType == ebaiapi.OrderUserCancelApply || msgType == ebaiapi.OrderUserCancelCSIntervene { @@ -360,12 +361,9 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta } } } else if msg.Cmd == ebaiapi.CmdOrderPartRefund { - msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"])) - status := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) - orderStatus.Remark = utils.Interface2String(msg.Body["reason"]) - if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { - orderStatus.Remark += ",额外原因:" + additionReason - } + msgType := int(utils.MustInterface2Int64(msg.Body["type"])) + status := int(utils.MustInterface2Int64(msg.Body["status"])) + orderStatus.Remark = buildFullReason(utils.Interface2String(msg.Body["reason"]), utils.Interface2String(msg.Body["addition_reason"])) if msgType == ebaiapi.OrderPartRefuncTypeMerchant && status == ebaiapi.OrderPartRefundSuccess { orderStatus.VendorStatus = fakeOrderAdjustFinished } @@ -381,6 +379,14 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta return orderStatus } +func buildFullReason(reason, addReason string) (fullReason string) { + fullReason = reason + if addReason != "" { + fullReason += ",额外原因:" + addReason + } + return fullReason +} + func (c *PurchaseHandler) GetStatusActionTimeout(order *model.GoodsOrder, statusType, status int) (params *partner.StatusActionParams) { if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { params = &partner.StatusActionParams{ // PickDeadline没有设置时才有效,饿百要求在5分钟内拣货,不然订单会被取消 diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index f8230aea8..c6a8096d8 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -1,16 +1,183 @@ package ebai import ( + "fmt" + "strings" + + "git.rosy.net.cn/baseapi/platformapi/ebaiapi" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" ) +var ( + AfsVendorStatus2Status4PartRefundMap = map[int]int{ + ebaiapi.OrderPartRefundApply: model.AfsOrderStatusWait4Approve, + ebaiapi.OrderPartRefundSuccess: model.AfsOrderStatusFinished, + ebaiapi.OrderPartRefundUserApplyArbitration: model.OrderStatusUnknown, // 是否是中间状态 + ebaiapi.OrderPartRefundFailed: model.AfsOrderStatusFailed, + ebaiapi.OrderPartRefundMerchantRefused: model.OrderStatusUnknown, // 是否是中间状态 + } + AfsVendorStatus2Status4UserCancel = map[int]int{ + ebaiapi.OrderUserCancelApply: model.AfsOrderStatusWait4Approve, + ebaiapi.OrderUserCancelCSIntervene: model.OrderStatusUnknown, + ebaiapi.OrderUserCancelCSRefused: model.AfsOrderStatusFailed, + ebaiapi.OrderUserCancelCSAgreed: model.AfsOrderStatusFinished, + ebaiapi.OrderUserCancelMerchantRefused: model.AfsOrderStatusFailed, + ebaiapi.OrderUserCancelMerchantAgreed: model.AfsOrderStatusFinished, + ebaiapi.OrderUserCancelInvalid: model.AfsOrderStatusFailed, + } +) + +func (c *PurchaseHandler) isAfsMsg(msg *ebaiapi.CallbackMsg) bool { + if msg.Cmd == ebaiapi.CmdOrderPartRefund { + msgType := int(utils.MustInterface2Int64(msg.Body["type"])) + return msgType == ebaiapi.OrderPartRefuncTypeCustomer + } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { + cancelType := int(utils.MustInterface2Int64(msg.Body["cancel_type"])) + return cancelType == ebaiapi.OrderUserCancelTypeAfterSale + } + return false +} + +func (c *PurchaseHandler) OnAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.CallbackResponse) { + utils.CallFuncAsync(func() { + retVal = c.onAfsOrderMsg(msg) + }) + return retVal +} + +func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.CallbackResponse) { + if orderStatus := c.callbackAfsMsg2Status(msg); orderStatus != nil { + afsOrder := &model.AfsOrder{ + VendorID: model.VendorIDEBAI, + AfsOrderID: orderStatus.VendorOrderID, + VendorOrderID: orderStatus.RefVendorOrderID, + VendorStoreID: "", + StoreID: 0, + AfsCreateAt: utils.Timestamp2Time(msg.Timestamp), + VendorAppealType: "", + AppealType: model.AfsAppealTypeRefund, + // FreightUserMoney: afsInfo.OrderFreightMoney, + // AfsFreightMoney: afsInfo.AfsFreight, + // BoxMoney: afsInfo.PackagingMoney, + // TongchengFreightMoney: afsInfo.TongchengFreightMoney, + // SkuBoxMoney: afsInfo.MealBoxMoney, + } + if msg.Cmd == ebaiapi.CmdOrderPartRefund { + if orderStatus.Status <= model.AfsOrderStatusNew { + partRefundData := msg.Data.(*ebaiapi.CBPartRefundInfo) + afsOrder.VendorReasonType = partRefundData.ReasonType + afsOrder.ReasonType = c.convertAfsReasonType(partRefundData.ReasonType) + afsOrder.ReasonDesc = utils.LimitUTF8StringLen(buildFullReason(partRefundData.Reason, partRefundData.AdditionReason), 1024) + afsOrder.ReasonImgList = utils.LimitUTF8StringLen(strings.Join(partRefundData.Photos, ","), 1024) + for _, sku := range partRefundData.RefundProducts { + orderSku := &model.OrderSkuFinancial{ + VendorID: model.VendorIDEBAI, + AfsOrderID: afsOrder.AfsOrderID, + VendorOrderID: afsOrder.VendorOrderID, + VendorStoreID: afsOrder.VendorStoreID, + StoreID: afsOrder.StoreID, + // ConfirmTime: afsOrder.AfsCreateAt, + VendorSkuID: sku.SkuID, + SkuID: int(utils.Str2Int64WithDefault(sku.SkuID, 0)), + Name: sku.Name, + UserMoney: sku.TotalRefund, + PmSkuSubsidyMoney: sku.ShopEleRefund, + IsAfsOrder: 1, + } + afsOrder.SkuUserMoney += orderSku.UserMoney + afsOrder.PmSubsidyMoney += orderSku.PmSubsidyMoney + afsOrder.Skus = append(afsOrder.Skus, orderSku) + } + } + } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { + if orderStatus.Status <= model.AfsOrderStatusNew { + if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, afsOrder.VendorID); err2 == nil { + afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg) + cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo) + afsOrder.AppealType = model.AfsAppealTypeRefund + afsOrder.VendorReasonType = "" + afsOrder.ReasonType = model.AfsReasonNotOthers + afsOrder.ReasonDesc = utils.LimitUTF8StringLen(buildFullReason(cancelData.CancelReason, cancelData.AdditionReason), 1024) + afsOrder.ReasonImgList = utils.LimitUTF8StringLen(strings.Join(cancelData.Pictures, ","), 1024) + } + } + } + var err error + if orderStatus.Status <= model.AfsOrderStatusNew { + err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) + } else { + err = partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus) + } + retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) + } + return retVal +} + +func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType string) int8 { + return model.AfsReasonNotOthers +} + +func (c *PurchaseHandler) GetAfsStatusFromVendorStatus4PartRefund(vendorStatus int) int { + return AfsVendorStatus2Status4PartRefundMap[vendorStatus] +} + +func (c *PurchaseHandler) GetAfsStatusFromVendorStatus4UserCancel(vendorStatus int) int { + return AfsVendorStatus2Status4UserCancel[vendorStatus] +} + +func (c *PurchaseHandler) callbackAfsMsg2Status(msg *ebaiapi.CallbackMsg) (orderStatus *model.OrderStatus) { + if msg.Cmd == ebaiapi.CmdOrderPartRefund { + partRefundData := msg.Data.(*ebaiapi.CBPartRefundInfo) + orderStatus = &model.OrderStatus{ + VendorOrderID: partRefundData.RefundID, // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 + VendorID: model.VendorIDEBAI, + OrderType: model.OrderTypeAfsOrder, + RefVendorOrderID: utils.Int64ToStr(partRefundData.OrderID), + RefVendorID: model.VendorIDEBAI, + VendorStatus: utils.Int2Str(partRefundData.Status), + Status: c.GetAfsStatusFromVendorStatus4PartRefund(partRefundData.Status), + StatusTime: utils.Timestamp2Time(msg.Timestamp), + Remark: buildFullReason(partRefundData.Reason, partRefundData.AdditionReason), + } + if orderStatus.Status == model.AfsOrderStatusWait4Approve && partRefundData.Type != ebaiapi.OrderPartRefuncTypeCustomer { + orderStatus.Status = model.AfsOrderStatusNew + } + } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { + cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo) + orderStatus = &model.OrderStatus{ + VendorOrderID: utils.Int64ToStr(cancelData.OrderID), // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 + VendorID: model.VendorIDEBAI, + OrderType: model.OrderTypeAfsOrder, + RefVendorOrderID: utils.Int64ToStr(cancelData.OrderID), + RefVendorID: model.VendorIDEBAI, + VendorStatus: utils.Int2Str(cancelData.Type), + Status: c.GetAfsStatusFromVendorStatus4UserCancel(cancelData.Type), + StatusTime: utils.Timestamp2Time(msg.Timestamp), + Remark: buildFullReason(cancelData.CancelReason, cancelData.AdditionReason), + } + } + return orderStatus +} + // 审核售后单申请 func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + if globals.EnableEbaiStoreWrite { + if approveType == partner.AfsApproveTypeRefused { + err = api.EbaiAPI.OrderDisagreeRefund(order.VendorOrderID, reason) + } else { + err = api.EbaiAPI.OrderAgreeRefund(order.VendorOrderID) + } + } return err } // 确认收到退货 func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + err = fmt.Errorf("内部错误,饿百平台不支持确认收到退货操作") return err } diff --git a/business/partner/purchase/jd/callback.go b/business/partner/purchase/jd/callback.go index ae619ad57..6b9b91d2f 100644 --- a/business/partner/purchase/jd/callback.go +++ b/business/partner/purchase/jd/callback.go @@ -1,42 +1,26 @@ package jd import ( - "errors" - "git.rosy.net.cn/baseapi/platformapi/jdapi" - "git.rosy.net.cn/baseapi/utils" ) func OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { if curPurchaseHandler != nil { - if retVal = curPurchaseHandler.OnOrderMsg(msg); retVal == nil { - retVal = jdapi.Err2CallbackResponse(errors.New("Internal Error"), "") - } + retVal = curPurchaseHandler.OnOrderMsg(msg) } return retVal } func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { if curPurchaseHandler != nil { - if retVal = curPurchaseHandler.OnWaybillMsg(msg); retVal == nil { - retVal = jdapi.Err2CallbackResponse(errors.New("Internal Error"), "") - } + retVal = curPurchaseHandler.OnWaybillMsg(msg) } return retVal } func OnStoreMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { if curPurchaseHandler != nil { - retVal = curPurchaseHandler.onStoreMsg(msg) - } - return retVal -} - -func OnFinancialMsg2(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { - if curPurchaseHandler != nil { - utils.CallFuncAsync(func() { - OnFinancialMsg(msg) - }) + retVal = curPurchaseHandler.OnStoreMsg(msg) } return retVal } diff --git a/business/partner/purchase/jd/financial.go b/business/partner/purchase/jd/financial.go index f4787bacc..df86d3e45 100644 --- a/business/partner/purchase/jd/financial.go +++ b/business/partner/purchase/jd/financial.go @@ -9,8 +9,15 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" ) +func (p *PurchaseHandler) OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { + utils.CallFuncAsync(func() { + retVal = p.onFinancialMsg(msg) + }) + return retVal +} + // 京东正向/退款订单类型处理--存储 -func OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { +func (p *PurchaseHandler) onFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { var err error // if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusAdjustSettle || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index d5636b233..e156bef09 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -42,7 +42,9 @@ func (c *PurchaseHandler) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi } func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { - if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus { + if msg.MsgURL == jdapi.CallbackMsgOrderAccounting { + retVal = c.OnFinancialMsg(msg) + } else if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus { retVal = c.OnAfsOrderMsg(msg) } else { if jdapi.OrderStatusNew == msg.StatusID { diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index a5896da35..162ae91fc 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -302,7 +302,7 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorStoreID s } // 当前京东的storeCrud消息不会在门店状态改变时发送,所以意义不大,先放在这里 -func (c *PurchaseHandler) onStoreMsg(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) { +func (c *PurchaseHandler) OnStoreMsg(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) { var err error if msg.StatusID == jdapi.StatusIDUpdateStore { var storeStatus int diff --git a/controllers/jd_callback.go b/controllers/jd_callback.go index e1e83b3b4..59273061e 100644 --- a/controllers/jd_callback.go +++ b/controllers/jd_callback.go @@ -184,18 +184,10 @@ func (c *DjswController) NewAfterSaleBill() { func (c *DjswController) AfterSaleBillStatus() { c.orderStatus(false) - // c.OrderAccounting() } func (c *DjswController) OrderAccounting() { - var obj *jdapi.CallbackOrderMsg - var callbackResponse *jdapi.CallbackResponse - obj, callbackResponse = api.JdAPI.GetOrderCallbackMsg(getUsefulRequest(c.Ctx)) - if callbackResponse == nil { - callbackResponse = jd.OnFinancialMsg2(obj) - } - c.Data["json"] = c.transferResponse(callbackResponse) - c.ServeJSON() + c.orderStatus(false) } func getUsefulRequest(ctx *context.Context) *http.Request {