From 028762a1e25de9d6260c2cb72441f8628294f349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 31 Jul 2023 12:42:34 +0800 Subject: [PATCH] 1 --- .../purchase/tao_vegetable/order_afs.go | 120 ++++++++---------- 1 file changed, 52 insertions(+), 68 deletions(-) diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 4f4e696c8..489016735 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -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,40 +94,31 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal return tao_vegetable.CallBackResultInfo(nil) } - 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, - ReasonType: 0, - ReasonDesc: refundData.RefundReason, - ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), - VendorOrgCode: api.GetVendorOrgCode(), - } - - 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 // 餐盒费 - afsOrder.TongchengFreightMoney = 0 // 同城配送费 - afsOrder.SkuBoxMoney = 0 // 商品包装费 - afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 - - var refundSkuCount int64 = 0 // 子订单申请退款的商品数 - var orderSkuCount int64 = 0 // 子订单购买的商品数 for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单 + afsOrder = &model.AfsOrder{ + VendorID: model.VendorIDTaoVegetable, + VendorOrderID: orderStatus.RefVendorOrderID, + VendorStoreID: refundData.StoreId, + StoreID: 0, + AfsCreatedAt: orderStatus.StatusTime, + VendorAppealType: status, // 原始售后方式 + AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 + VendorReasonType: refundData.RefundReason, + ReasonType: 0, + ReasonDesc: refundData.RefundReason, + ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), + VendorOrgCode: api.GetVendorOrgCode(), + VendorOrderID2: refundData.RefundId, + } + afsOrder.FreightUserMoney = 0 // 订单运费 + afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 + afsOrder.BoxMoney = 0 // 餐盒费 + afsOrder.TongchengFreightMoney = 0 // 同城配送费 + afsOrder.SkuBoxMoney = 0 // 商品包装费 + afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 + + var refundSkuCount int64 = 0 // 子订单申请退款的商品数 + var orderSkuCount int64 = 0 // 子订单购买的商品数 refundSkuCount += refundSku.RefundAmount for _, sku := range *skuList.SubOrderResponseList { // 总订单 if refundSku.OutSubOrderId == *sku.OutSubOrderId { @@ -152,27 +135,33 @@ 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 { - afsOrder.RefundType = model.AfsTypePartRefund - } - afsOrder.SkuUserMoney += refundData.RefundFee - if afsOrder != nil { - //直接就来一个新的售后单,并且还是售后完成的 - if orderStatus.Status == model.AfsOrderStatusFinished { - afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt + if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退 + afsOrder.RefundType = model.AfsTypeFullRefund + } else { + afsOrder.RefundType = model.AfsTypePartRefund + } + afsOrder.SkuUserMoney += refundData.RefundFee + + if afsOrder != nil { + //直接就来一个新的售后单,并且还是售后完成的 + if orderStatus.Status == model.AfsOrderStatusFinished { + afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt + } + orderStatus.RefVendorOrderID = afsOrder.VendorOrderID + orderStatus.VendorOrderID = afsOrder.AfsOrderID + err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } - 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 - } + 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 - } + orderStatus.RefVendorOrderID = order.VendorOrderID case tao_vegetable.OrderStatusOnSaleCancel: refundData := msg.(*tao_vegetable.OnSaleCancel) orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.PartCancelRequest.BizOrderId)