This commit is contained in:
邹宗楠
2023-07-31 12:42:34 +08:00
parent a34f661391
commit 028762a1e2

View File

@@ -82,16 +82,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
StoreId: utils.String2Pointer(refundData.StoreId),
}}
order, err := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable)
if err != nil {
globals.SugarLogger.Debugf("用户申请售后时,通过售后外部渠道订单号获取主订单失败:%s", err.Error())
return tao_vegetable.CallBackResultInfo(err)
}
if order == nil {
globals.SugarLogger.Debugf("数据库订单查询失败,订单号异常 :%s", refundData.OutOrderId)
return tao_vegetable.CallBackResultInfo(errors.New("订单号异常"))
}
queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID))
queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(orderStatus.RefVendorOrderID))
skuList, err := api.QueryOrderDetail(queryOrderDetailParam)
if err != nil {
return tao_vegetable.CallBackResultInfo(err)
@@ -102,14 +94,13 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
return tao_vegetable.CallBackResultInfo(nil)
}
for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDTaoVegetable,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: refundData.StoreId,
StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime,
VendorAppealType: status, // 原始售后方式
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
VendorReasonType: refundData.RefundReason,
@@ -117,15 +108,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
ReasonDesc: refundData.RefundReason,
ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024),
VendorOrgCode: api.GetVendorOrgCode(),
VendorOrderID2: refundData.RefundId,
}
refundIds := make([]int64, 0, 0)
bizOrderIds := make([]int64, len(refundData.SubRefundOrders))
for _, v := range refundData.SubRefundOrders {
bizOrderIds = append(bizOrderIds, utils.Str2Int64(v.OutSubOrderId))
}
refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId))
afsOrder.FreightUserMoney = 0 // 订单运费
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
afsOrder.BoxMoney = 0 // 餐盒费
@@ -135,7 +119,6 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
var refundSkuCount int64 = 0 // 子订单申请退款的商品数
var orderSkuCount int64 = 0 // 子订单购买的商品数
for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单
refundSkuCount += refundSku.RefundAmount
for _, sku := range *skuList.SubOrderResponseList { // 总订单
if refundSku.OutSubOrderId == *sku.OutSubOrderId {
@@ -152,9 +135,11 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
orderSkuCount += utils.Float64TwoInt64(*sku.BuySaleQuantity)
afsOrder.VendorOrderID = utils.Int64ToStr(*skuList.BizOrderId)
afsOrder.AfsOrderID = utils.Int64ToStr(*sku.BizSubOrderId)
}
}
}
if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退
afsOrder.RefundType = model.AfsTypeFullRefund
} else {
@@ -167,12 +152,16 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
if orderStatus.Status == model.AfsOrderStatusFinished {
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
}
orderStatus.RefVendorOrderID = afsOrder.VendorOrderID
orderStatus.VendorOrderID = afsOrder.AfsOrderID
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
}
}
case tao_vegetable.OrderStatusCancelAfs:
globals.SugarLogger.Debugf("用户取消售后----------- %s", utils.Format4Output(msg, false))
// 删除售后单
afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, "")
if err != nil || afsOrder == nil {
globals.SugarLogger.Debugf("用户取消售后单,获取之前生成的售后单失败")
return tao_vegetable.CallBackResultInfo(err)
@@ -181,12 +170,12 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply)
for _, v := range afsOrder {
// 商家驳回,会发出用户撤销的回调通知,不管他
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund {
return tao_vegetable.CallBackResultInfo(nil)
if v.VendorOrderID2 != cancelMsg.RefundId {
continue
}
// 用户撤销未处理的售后订单
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 {
if v.Flag == 0 {
// 下面处理用户撤销售后
if err = utils.CallFuncLogError(func() error {
_, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID")
@@ -409,27 +398,22 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
switch status {
case tao_vegetable.OrderStatusApplyAfs: // 用户申请售后
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
orderStatus.RefVendorOrderID = refundData.OutOrderId
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs)
orderStatus.StatusTime = time.Now()
orderStatus.Remark = refundData.Remarks
orderStatus.VendorOrderID = refundData.RefundId
//orderStatus.VendorOrderID = refundData.RefundId
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
if order != nil {
orderStatus.RefVendorOrderID = order.VendorOrderID
}
case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后
refundData := msg.(*tao_vegetable.UserCancelRefundApply)
orderStatus.RefVendorOrderID = refundData.OutOrderId
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs)
orderStatus.StatusTime = time.Now()
orderStatus.VendorOrderID = refundData.RefundId
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
if order != nil {
orderStatus.RefVendorOrderID = order.VendorOrderID
}
case tao_vegetable.OrderStatusOnSaleCancel:
refundData := msg.(*tao_vegetable.OnSaleCancel)
orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.PartCancelRequest.BizOrderId)