- mtwm售后单

This commit is contained in:
gazebo
2019-05-12 18:18:12 +08:00
parent 486800e58a
commit c24acf389c
5 changed files with 30 additions and 17 deletions

View File

@@ -345,6 +345,12 @@ const (
AfsReasonNotOthers = 0 // 其它 AfsReasonNotOthers = 0 // 其它
) )
const (
AfsTypeUnknown = 0 // 未知
AfsTypePartRefund = 1 // 部分退款
AfsTypeFullRefund = 2 // 全额退款
)
func IsPurchaseVendorExist(vendorID int) bool { func IsPurchaseVendorExist(vendorID int) bool {
_, ok := VendorNames[vendorID] _, ok := VendorNames[vendorID]
return ok && vendorID >= VendorIDPurchaseBegin && vendorID <= VendorIDPurchaseEnd return ok && vendorID >= VendorIDPurchaseBegin && vendorID <= VendorIDPurchaseEnd

View File

@@ -90,6 +90,7 @@ type AfsOrder struct {
AppealType int8 `json:"appealType"` // 售后方式 AppealType int8 `json:"appealType"` // 售后方式
VendorAppealType string `orm:"size(255)" json:"vendorAppealType"` VendorAppealType string `orm:"size(255)" json:"vendorAppealType"`
Flag int `json:"flag"` Flag int `json:"flag"`
RefundType int8 `json:"refundType"`
SkuUserMoney int64 `json:"skuUserMoney"` // 用户支付菜品金额 SkuUserMoney int64 `json:"skuUserMoney"` // 用户支付菜品金额
FreightUserMoney int64 `json:"freightUserMoney"` // 用户支付运费金额 FreightUserMoney int64 `json:"freightUserMoney"` // 用户支付运费金额

View File

@@ -73,6 +73,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
ReasonType: c.convertAfsReasonType(partRefundData.ReasonType), ReasonType: c.convertAfsReasonType(partRefundData.ReasonType),
ReasonDesc: utils.LimitUTF8StringLen(buildFullReason(partRefundData.Reason, partRefundData.AdditionReason), 1024), ReasonDesc: utils.LimitUTF8StringLen(buildFullReason(partRefundData.Reason, partRefundData.AdditionReason), 1024),
ReasonImgList: utils.LimitUTF8StringLen(strings.Join(partRefundData.Photos, ","), 1024), ReasonImgList: utils.LimitUTF8StringLen(strings.Join(partRefundData.Photos, ","), 1024),
RefundType: model.AfsTypePartRefund,
// FreightUserMoney: afsInfo.OrderFreightMoney, // FreightUserMoney: afsInfo.OrderFreightMoney,
// AfsFreightMoney: afsInfo.AfsFreight, // AfsFreightMoney: afsInfo.AfsFreight,
@@ -100,9 +101,10 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
afsOrder.Skus = append(afsOrder.Skus, orderSku) afsOrder.Skus = append(afsOrder.Skus, orderSku)
} }
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel { } else if msg.Cmd == ebaiapi.CmdOrderUserCancel {
if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, afsOrder.VendorID); err2 == nil { if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil {
afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg) afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg)
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo) cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
afsOrder.RefundType = model.AfsTypeFullRefund
afsOrder.AppealType = model.AfsAppealTypeRefund afsOrder.AppealType = model.AfsAppealTypeRefund
afsOrder.VendorReasonType = "" afsOrder.VendorReasonType = ""
afsOrder.ReasonType = model.AfsReasonNotOthers afsOrder.ReasonType = model.AfsReasonNotOthers

View File

@@ -220,11 +220,13 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund: case mtwmapi.MsgTypeOrderRefund, mtwmapi.MsgTypeOrderPartialRefund:
notifyType := msg.FormData.Get("notify_type") notifyType := msg.FormData.Get("notify_type")
vendorStatus = msg.Cmd + "-" + notifyType vendorStatus = msg.Cmd + "-" + notifyType
if true /*!c.isOrderFinished(utils.Str2Int64(orderID))*/ { // 已经提前判断了,到这里的都是售中 if true { // 已经提前判断了,到这里的都是售中
remark = msg.FormData.Get("reason") remark = msg.FormData.Get("reason")
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
if notifyType == mtwmapi.NotifyTypePartyApply { if notifyType == mtwmapi.NotifyTypePartyApply {
api.MtwmAPI.OrderRefundReject(utils.Str2Int64(orderID), "bu") // todo 京东与饿百都没有售前用户提出订单调整的,自动拒绝调整单 if globals.EnableMtwmStoreWrite {
api.MtwmAPI.OrderRefundReject(utils.Str2Int64(orderID), "bu") // todo 京东与饿百都没有售前用户提出订单调整的,自动拒绝调整单
}
} else if notifyType == mtwmapi.NotifyTypeSuccess { } else if notifyType == mtwmapi.NotifyTypeSuccess {
vendorStatus = fakeOrderAdjustFinished vendorStatus = fakeOrderAdjustFinished
} }
@@ -280,7 +282,9 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived) c.postFakeMsg(order.VendorOrderID, FakeMsgTypeOrderReceived, mtwmapi.OrderStatusReceived)
} }
} else { } else {
err = c.CancelOrder(jxcontext.AdminCtx, order, "bu") if globals.EnableMtwmStoreWrite {
err = c.CancelOrder(jxcontext.AdminCtx, order, "bu")
}
} }
return err return err
} }
@@ -407,12 +411,3 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods
} }
return err return err
} }
func (c *PurchaseHandler) isOrderFinished(vendorOrderID int64) bool {
if status, err := api.MtwmAPI.OrderViewStatus(vendorOrderID); err == nil {
strStatus := utils.Int2Str(status)
return strStatus == mtwmapi.OrderStatusFinished ||
strStatus == mtwmapi.OrderStatusCanceled
}
return false
}

View File

@@ -2,6 +2,7 @@ package mtwm
import ( import (
"fmt" "fmt"
"strings"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
@@ -29,7 +30,13 @@ var (
func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool { func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool {
if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
return c.isOrderFinished(utils.Str2Int64(GetOrderIDFromMsg(msg))) refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
orderID := utils.Str2Int64(GetOrderIDFromMsg(msg))
orderInfo, err := api.MtwmAPI.OrderGetOrderDetail2(orderID, false)
if err == nil {
return orderInfo.Status >= int(utils.Str2Int64(mtwmapi.OrderStatusFinished)) && refundData.Timestamp > orderInfo.Utime
}
globals.SugarLogger.Warnf("mtwm isAfsMsg OrderGetOrderDetail2 orderID:%d failed with error:%v", orderID, err)
} }
return false return false
} }
@@ -62,7 +69,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
VendorReasonType: "", VendorReasonType: "",
ReasonType: model.AfsReasonNotOthers, ReasonType: model.AfsReasonNotOthers,
ReasonDesc: utils.LimitUTF8StringLen(refundData.Reason, 1024), ReasonDesc: utils.LimitUTF8StringLen(refundData.Reason, 1024),
ReasonImgList: utils.LimitUTF8StringLen(refundData.Pictures, 1024), ReasonImgList: utils.LimitUTF8StringLen(strings.Join(refundData.PictureList, ","), 1024),
RefundType: model.AfsTypePartRefund,
// FreightUserMoney: afsInfo.OrderFreightMoney, // FreightUserMoney: afsInfo.OrderFreightMoney,
// AfsFreightMoney: afsInfo.AfsFreight, // AfsFreightMoney: afsInfo.AfsFreight,
@@ -90,13 +98,14 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
} }
afsOrder.PmSubsidyMoney += afsOrder.RefundMoney - afsOrder.SkuUserMoney afsOrder.PmSubsidyMoney += afsOrder.RefundMoney - afsOrder.SkuUserMoney
} else { } else {
if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, afsOrder.VendorID); err2 == nil { if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDMTWM); err2 == nil {
afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg.FormData) afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg.FormData)
afsOrder.RefundType = model.AfsTypeFullRefund
afsOrder.AppealType = model.AfsAppealTypeRefund afsOrder.AppealType = model.AfsAppealTypeRefund
afsOrder.VendorReasonType = "" afsOrder.VendorReasonType = ""
afsOrder.ReasonType = model.AfsReasonNotOthers afsOrder.ReasonType = model.AfsReasonNotOthers
afsOrder.ReasonDesc = utils.LimitUTF8StringLen(refundData.Reason, 1024) afsOrder.ReasonDesc = utils.LimitUTF8StringLen(refundData.Reason, 1024)
afsOrder.ReasonImgList = utils.LimitUTF8StringLen(refundData.Pictures, 1024) afsOrder.ReasonImgList = utils.LimitUTF8StringLen(strings.Join(refundData.PictureList, ","), 1024)
} }
} }
if afsOrder != nil { if afsOrder != nil {