- 京东售后单第一版
This commit is contained in:
@@ -9,8 +9,14 @@ import (
|
||||
|
||||
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"), "")
|
||||
if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus {
|
||||
utils.CallFuncAsync(func() {
|
||||
retVal = OnAfsOrderMsg(msg)
|
||||
})
|
||||
} else {
|
||||
if retVal = curPurchaseHandler.OnOrderMsg(msg); retVal == nil {
|
||||
retVal = jdapi.Err2CallbackResponse(errors.New("Internal Error"), "")
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal
|
||||
@@ -25,6 +31,15 @@ func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackR
|
||||
return retVal
|
||||
}
|
||||
|
||||
func OnAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
if curPurchaseHandler != nil {
|
||||
if retVal = curPurchaseHandler.OnAfsOrderMsg(msg); retVal == nil {
|
||||
retVal = jdapi.Err2CallbackResponse(errors.New("Internal Error"), "")
|
||||
}
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
func OnStoreMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
if curPurchaseHandler != nil {
|
||||
retVal = curPurchaseHandler.onStoreMsg(msg)
|
||||
|
||||
122
business/partner/purchase/jd/order_afs.go
Normal file
122
business/partner/purchase/jd/order_afs.go
Normal file
@@ -0,0 +1,122 @@
|
||||
package jd
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
var (
|
||||
AfsVendorStatus2StatusMap = map[string]int{
|
||||
jdapi.AfsServiceStateWaiting4Audit: model.AfsOrderStatusWait4Approve, // 需要审核
|
||||
|
||||
jdapi.AfsServiceStateRefundProcessing: model.AfsOrderStatusNew,
|
||||
jdapi.AfsServiceStateWaiting4DirectCompensate: model.AfsOrderStatusNew,
|
||||
jdapi.AfsServiceStateWaiting4ReturnGoods: model.AfsOrderStatusNew,
|
||||
|
||||
jdapi.AfsServiceStateWaiting4MerchantReceiveGoods: model.AfsOrderStatusWait4ReceiveGoods,
|
||||
|
||||
jdapi.AfsServiceStateRefundSuccess: model.AfsOrderStatusFinished,
|
||||
jdapi.AfsServiceStateSolved: model.AfsOrderStatusFinished,
|
||||
jdapi.AfsServiceStateDirectCompensateSuccess: model.AfsOrderStatusFinished,
|
||||
jdapi.AfsServiceStateReturnGoodsSuccess: model.AfsOrderStatusFinished,
|
||||
|
||||
jdapi.AfsServiceStateRefundFailed: model.AfsOrderStatusFailed,
|
||||
jdapi.AfsServiceStateAuditRefused: model.AfsOrderStatusFailed,
|
||||
jdapi.AfsServiceStateUserCanceled: model.AfsOrderStatusFailed,
|
||||
jdapi.AfsServiceStateMerchantFailedReceiveGoods: model.AfsOrderStatusFailed,
|
||||
jdapi.AfsServiceStateDirectCompensateFailed: model.AfsOrderStatusFailed,
|
||||
jdapi.AfsServiceStateReturnGoodsFailed: model.AfsOrderStatusFailed,
|
||||
}
|
||||
)
|
||||
|
||||
func (c *PurchaseHandler) OnAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onAfsOrderMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) onAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
afsInfo, err := api.JdAPI.GetAfsService2(msg.BillID)
|
||||
if err == nil {
|
||||
var err error
|
||||
status := c.callbackAfsMsg2Status(msg, afsInfo)
|
||||
if status.Status <= model.AfsOrderStatusNew {
|
||||
afsOrder := c.buildAfsOrder(afsInfo)
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, status)
|
||||
} else {
|
||||
err = partner.CurOrderManager.OnAfsOrderStatusChanged(status)
|
||||
}
|
||||
retVal = jdapi.Err2CallbackResponse(err, status.VendorStatus)
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) callbackAfsMsg2Status(msg *jdapi.CallbackOrderMsg, afsInfo *jdapi.AfsServiceResponse) *model.OrderStatus {
|
||||
orderStatus := &model.OrderStatus{
|
||||
VendorOrderID: msg.BillID, // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中
|
||||
VendorID: model.VendorIDJD,
|
||||
OrderType: model.OrderTypeOrder,
|
||||
RefVendorOrderID: afsInfo.OrderID,
|
||||
RefVendorID: model.VendorIDJD,
|
||||
VendorStatus: msg.StatusID,
|
||||
Status: c.GetAfsStatusFromVendorStatus(msg.StatusID),
|
||||
StatusTime: utils.Str2Time(msg.Timestamp),
|
||||
Remark: msg.Remark,
|
||||
}
|
||||
return orderStatus
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(vendorStatus string) int {
|
||||
if status, ok := AfsVendorStatus2StatusMap[vendorStatus]; ok {
|
||||
return status
|
||||
}
|
||||
return model.OrderStatusUnknown
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsOrder *model.AfsOrder) {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDJD,
|
||||
AfsOrderID: afsInfo.AfsServiceOrder,
|
||||
VendorOrderID: afsInfo.OrderID,
|
||||
VendorStoreID: afsInfo.StationID,
|
||||
StoreID: int(utils.Str2Int64WithDefault(afsInfo.StationNumOutSystem, 0)),
|
||||
AfsCreateAt: afsInfo.UpdateTime.GoTime(),
|
||||
FreightUserMoney: afsInfo.OrderFreightMoney,
|
||||
AfsFreightMoney: afsInfo.AfsFreight,
|
||||
BoxMoney: afsInfo.PackagingMoney,
|
||||
TongchengFreightMoney: afsInfo.TongchengFreightMoney,
|
||||
SkuBoxMoney: afsInfo.MealBoxMoney,
|
||||
}
|
||||
for _, x := range afsInfo.AfsDetailList {
|
||||
orderSku := &model.OrderSkuFinancial{
|
||||
VendorID: model.VendorIDJD,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
VendorOrderID: afsOrder.VendorOrderID,
|
||||
VendorStoreID: afsOrder.VendorStoreID,
|
||||
StoreID: afsOrder.StoreID,
|
||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||
VendorSkuID: utils.Int64ToStr(x.WareID),
|
||||
SkuID: int(utils.Str2Int64WithDefault(x.SkuIDIsv, 0)),
|
||||
Name: x.WareName,
|
||||
UserMoney: x.AfsMoney,
|
||||
PmSkuSubsidyMoney: x.PlatPayMoney,
|
||||
IsAfsOrder: 1,
|
||||
}
|
||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
orderSku.PmSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
|
||||
for _, y := range x.AfsSkuDiscountList {
|
||||
orderSku.PmSubsidyMoney += y.PlatPayMoney
|
||||
}
|
||||
|
||||
afsOrder.SkuUserMoney += orderSku.UserMoney
|
||||
afsOrder.PmSubsidyMoney += orderSku.PmSubsidyMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
}
|
||||
return afsOrder
|
||||
}
|
||||
Reference in New Issue
Block a user