diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index d89a62b91..a0bb7c184 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -641,48 +641,6 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod // CancelOrder 商户取消订单(取消订单全部商品) func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { api := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "") - localSkuList, _ := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil) - skuMap := make(map[string]*model.OrderSku, 0) - for _, v := range localSkuList { - skuMap[v.VendorSubOrderID] = v - } - orderSkuList, err := getOrderCancelList(api, order) - if err != nil { - return err - } - outSubOrderIds := make([]domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO, 0, len(*orderSkuList.OutSubOrders)) - for _, v := range *orderSkuList.OutSubOrders { - if *v.CanReverse { - subOrder := domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO{ - RefundFee: utils.String2Pointer(utils.Int64ToStr(*v.MaxRefundFee)), - RefundAmount: nil, - OutSubOrderId: v.OutSubOrderId, - } - if skuMap[*v.OutSubOrderId] != nil { - subOrder.RefundAmount = utils.String2Pointer(utils.Int2Str(skuMap[*v.OutSubOrderId].Count)) - } else { - continue - } - outSubOrderIds = append(outSubOrderIds, subOrder) - } - } - - reasonId := *orderSkuList.ReasonList - param := &request3156.AlibabaTclsAelophyRefundCsapplyNewRequest{ - RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyNewRefundCsApplyNewDTO{ - ReasonId: reasonId[0].ReasonId, - OutOrderId: utils.String2Pointer(order.VendorOrderID2), - StoreId: utils.String2Pointer(order.VendorStoreID), - RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())), - Memo: utils.String2Pointer(reason), - SubRefundOrders: &outSubOrderIds, - RefundReason: utils.String2Pointer(reason), - }, - } - - if err = api.PartialRefund(param); err == nil { - c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel) - } if order.Status < model.OrderStatusEndBegin { // 发送取消状态,商户取消 @@ -693,6 +651,50 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods Status: utils.String2Pointer(tao_vegetable.OrderStatusMerchantCancel), }, }) + } else { + localSkuList, _ := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil) + skuMap := make(map[string]*model.OrderSku, 0) + for _, v := range localSkuList { + skuMap[v.VendorSubOrderID] = v + } + orderSkuList, err := getOrderCancelList(api, order) + if err != nil { + return err + } + outSubOrderIds := make([]domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO, 0, len(*orderSkuList.OutSubOrders)) + for _, v := range *orderSkuList.OutSubOrders { + if *v.CanReverse { + subOrder := domain3156.AlibabaTclsAelophyRefundCsapplyNewCsApplySubOrderDTO{ + RefundFee: utils.String2Pointer(utils.Int64ToStr(*v.MaxRefundFee)), + RefundAmount: nil, + OutSubOrderId: v.OutSubOrderId, + } + if skuMap[*v.OutSubOrderId] != nil { + subOrder.RefundAmount = utils.String2Pointer(utils.Int2Str(skuMap[*v.OutSubOrderId].Count)) + } else { + continue + } + outSubOrderIds = append(outSubOrderIds, subOrder) + } + } + + reasonId := *orderSkuList.ReasonList + param := &request3156.AlibabaTclsAelophyRefundCsapplyNewRequest{ + RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyNewRefundCsApplyNewDTO{ + ReasonId: reasonId[0].ReasonId, + OutOrderId: utils.String2Pointer(order.VendorOrderID2), + StoreId: utils.String2Pointer(order.VendorStoreID), + RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())), + Memo: utils.String2Pointer(reason), + SubRefundOrders: &outSubOrderIds, + RefundReason: utils.String2Pointer(reason), + OrderFrom: utils.Int64ToPointer(tao_vegetable.ChannelCome), + }, + } + + if err = api.PartialRefund(param); err == nil { + c.postFakeMsg(order.VendorOrderID, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusMerchantCancel) + } } return err }