This commit is contained in:
邹宗楠
2023-07-10 15:47:34 +08:00
parent f011b3157e
commit a5d02d9d5a

View File

@@ -16,6 +16,7 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"strings"
"time"
)
@@ -70,21 +71,7 @@ func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{})
func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
var err error
var db = dao.GetDB()
orderStatus := c.callbackAfsMsg2Status(status, msg)
//needCallNew := orderStatus.Status == model.AfsOrderStatusWait4Approve || orderStatus.Status == model.AfsOrderStatusNew
//if !needCallNew {
// _, err := partner.CurOrderManager.LoadAfsOrder(orderStatus.VendorOrderID, orderStatus.VendorID)
// if err != nil {
// if dao.IsNoRowsError(err) {
// needCallNew = true
// } else {
// return tao_vegetable.CallBackResultInfo(err)
// }
// }
//}
//if needCallNew && orderStatus.Status == model.AfsOrderStatusOnSaleAfs {
// needCallNew = false
//}
orderStatus, scarceGoods := c.callbackAfsMsg2Status(status, msg)
// 用户取消售后
switch status {
@@ -302,6 +289,65 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
globals.SugarLogger.Debugf("==============onsaleRefund orderStatus: = %s", utils.Format4Output(orderStatus, false))
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
}
case tao_vegetable.OrderStatusRefundSuccess:
// 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单
if scarceGoods != nil {
var afsOrder *model.AfsOrder
refundSuccess := msg.(*tao_vegetable.RefundOrderFinish)
var api = getAPI("", 0, refundSuccess.StoreId)
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDTaoVegetable,
AfsOrderID: refundSuccess.OutMainRefundId,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: refundSuccess.StoreId,
StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime,
VendorAppealType: status, // 原始售后方式
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel,
ReasonType: 0,
ReasonDesc: "缺货调整,退款成功通知",
VendorOrgCode: api.GetVendorOrgCode(),
}
afsOrder.FreightUserMoney = 0 // 订单运费
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
afsOrder.BoxMoney = 0 // 餐盒费
afsOrder.TongchengFreightMoney = 0 // 同城配送费
afsOrder.SkuBoxMoney = 0 // 商品包装费
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
for _, v := range *scarceGoods {
var refundFee int64 = 0
skuSt := *v.Attributes
a2 := strings.Index(skuSt, "skuName")
a3 := strings.Index(skuSt, "wdkrfqr")
skuName := skuSt[a2+12 : a3-5]
orderSku := &model.OrderSkuFinancial{
Count: utils.Float64TwoInt(utils.Str2Float64(*v.RefundQuantity)),
VendorSkuID: *v.SkuCode,
SkuID: utils.Str2Int(*v.SkuCode),
Name: skuName,
UserMoney: *v.RefundAmount,
PmSkuSubsidyMoney: 0, // 平台补贴商品
VendorOrderID: orderStatus.VendorOrderID,
VendorSubOrderID: *v.OutOrderId,
}
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
refundFee += *v.RefundAmount
afsOrder.SkuUserMoney += refundFee
afsOrder.RefundType = model.AfsTypePartRefund
if afsOrder != nil {
//直接就来一个新的售后单,并且还是售后完成的
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
}
}
}
}
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
@@ -328,7 +374,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
return tao_vegetable.CallBackResultInfo(err)
}
func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) (orderStatus *model.OrderStatus) {
func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) (orderStatus *model.OrderStatus, taoRefundList *[]domain591.AlibabaWdkOrderRefundGetOrderSyncRefundDto) {
orderStatus = &model.OrderStatus{
VendorID: model.VendorIDTaoVegetable,
OrderType: model.OrderTypeAfsOrder,
@@ -388,13 +434,13 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
if refundAfs.Orders == nil {
globals.SugarLogger.Debugf("================售中退款成功回调查询售后单为空:")
} else {
orderId := *refundAfs.Orders
orderStatus.RefVendorOrderID = utils.Int64ToStr(*orderId[0].OriginParentId)
taoRefundList := *refundAfs.Orders
orderStatus.RefVendorOrderID = utils.Int64ToStr(*taoRefundList[0].OriginParentId)
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
orderStatus.StatusTime = time.Now()
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
orderStatus.VendorOrderID = utils.Int64ToStr(*orderId[0].RefundOrderId)
orderStatus.VendorOrderID = utils.Int64ToStr(*taoRefundList[0].RefundOrderId)
}
}
@@ -403,7 +449,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
if orderStatus.VendorOrderID == "" {
orderStatus.VendorOrderID = orderStatus.RefVendorOrderID
}
return orderStatus
return orderStatus, taoRefundList
}
func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(notifyType string) int {