diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index e6025ae56..764f597bb 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -681,56 +681,55 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods return err } -// AdjustOrder 商户发起部分退款(取消订单部分商品) +// AdjustOrder 商户发起部分退款(取消订单部分商品),淘宝没有部分退款,所以调整订单的时候就是在拣货,把缺货的部分排除 func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") - // 美团外卖必须要确认订单后才能调整单 - if order.Status < model.OrderStatusFinishedPickup { - if err = c.PickupGoods(order, false, ctx.GetUserName()); err != nil { - return err - } - } - - // 获取订单的子订单id - //requestParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ - // StoreId: utils.String2Pointer(order.VendorStoreID), - // BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), - //}} - //orderDetail, err := api.QueryOrderDetail(requestParam) - //if err != nil { - // return err - //} - // - //skuMap := make(map[string]string, 0) - //for _, v := range *orderDetail.SubOrderResponseList { - // skuMap[*v.SkuCode] = *v.OutSubOrderId - //} // 获取需要退货商品的子订单id - refundSkuOrderID := make([]string, 0, len(removedSkuList)) - //for _, v := range removedSkuList { - // if orderId, ok := skuMap[v.VendorSkuID]; ok { - // refundSkuOrderID = append(refundSkuOrderID, orderId) - // } - //} - + refundSkuOrderID := make(map[int]int, 0) for _, v := range removedSkuList { - refundSkuOrderID = append(refundSkuOrderID, v.VendorSubOrderID) + refundSkuOrderID[v.SkuID] = 1 } - // 商家申请退货 - param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{ - RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{ - ReasonId: utils.Int64ToPointer(1111), - OutOrderId: utils.String2Pointer(order.VendorOrderID), - StoreId: utils.String2Pointer(order.VendorStoreID), - RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())), - OutSubOrderIds: &refundSkuOrderID, - Memo: utils.String2Pointer(reason), - }, + param := &request591.AlibabaAelophyOrderWorkCallbackRequest{} + param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{ + StoreId: utils.String2Pointer(order.VendorStoreID), + BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + Status: utils.String2Pointer(tao_vegetable.OrderStatusPickedUp), } - return api.PartialRefund(param) + workCallbackSubOrderInfoList := make([]domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo, 0, 0) + + orderDetail, err := getAPI(order.VendorOrgCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ + StoreId: utils.String2Pointer(order.VendorStoreID), + BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)), + }}) + if err != nil { + return err + } + for _, v := range *orderDetail.SubOrderResponseList { + // 缺货 + if refundSkuOrderID[utils.Str2Int(*v.SkuCode)] == model.YES { + continue + } + workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{ + BizSubOrderId: v.BizSubOrderId, + SkuCode: v.SkuCode, + PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)), + PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)), + } + workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo) + } + + // 出库 + param.WorkCallbackRequest.WorkCallbackSubOrderInfoList = &workCallbackSubOrderInfoList + + if err = api.DeliveryFinish(param); err != nil { + globals.SugarLogger.Debugf("PickupGoods 拣货失败可能是BizSubOrderId 没填写 : %s", err.Error()) + return err + } + + return nil } // ListOrders 获取门店订单列表(补全遗漏订单)