diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index 48e0435b6..a0a3fe037 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -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 {