From ab6f22df40d32642c68b5d51c3d8cdb0f6d2e39b Mon Sep 17 00:00:00 2001 From: devil_gong Date: Sat, 12 Oct 2019 16:51:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=94=AE=E5=90=8E=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=8C=E4=BB=85=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E6=9C=AA=E5=8F=91=E8=B4=A7=E7=9B=B4=E6=8E=A5=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=B9=B6=E9=87=8A=E6=94=BE=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/service/OrderAftersaleService.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/application/service/OrderAftersaleService.php b/application/service/OrderAftersaleService.php index 22ffe059c..c0c4adbd7 100644 --- a/application/service/OrderAftersaleService.php +++ b/application/service/OrderAftersaleService.php @@ -777,6 +777,14 @@ class OrderAftersaleService } } + // 是否仅退款操作需要退数量操作 + $is_refund_only_number = false; + if($aftersale['type'] == 0 && $order['data']['status'] <= 2) + { + $is_refund_only_number = true; + $aftersale['number'] = $order['data']['items']['buy_number']; + } + // 更新主订单 $refund_price = PriceNumberFormat($order['data']['refund_price']+$aftersale['price']); $returned_quantity = intval($order['data']['returned_quantity']+$aftersale['number']); @@ -787,11 +795,14 @@ class OrderAftersaleService 'close_time' => time(), 'upd_time' => time(), ]; + // 如果退款金额和退款数量到达订单实际是否金额和购买数量则关闭订单 if($refund_price >= $order['data']['pay_price'] && $returned_quantity >= $order['data']['buy_number_count']) { $order_upd_data['status'] = 6; } + + // 更新主订单 if(!Db::name('Order')->where(['id'=>$order['data']['id']])->update($order_upd_data)) { Db::rollback(); @@ -811,7 +822,7 @@ class OrderAftersaleService } // 库存回滚 - if($aftersale['type'] == 1) + if($aftersale['type'] == 1 || $is_refund_only_number == true) { $ret = BuyService::OrderInventoryRollback(['order_id'=>$order['data']['id'], 'order_data'=>$order_upd_data, 'appoint_order_detail_id'=>$aftersale['order_detail_id'], 'appoint_buy_number'=>$aftersale['number']]); if($ret['code'] != 0) @@ -840,6 +851,12 @@ class OrderAftersaleService 'audit_time' => time(), 'upd_time' => time(), ]; + + // 仅退款是否退了数量 + if($is_refund_only_number == true) + { + $aftersale_upd_data['number'] = $aftersale['number']; + } if(!Db::name('OrderAftersale')->where(['id'=>$aftersale['id']])->update($aftersale_upd_data)) { Db::rollback(); -- GitLab