From 01ca78ac7e17a41689bf410e0c1c63a82388a296 Mon Sep 17 00:00:00 2001 From: evoxwht <442384644@qq.com> Date: Mon, 27 Mar 2023 17:13:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9C=AA=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=97=B6=E5=80=99=E6=89=8D=E4=BC=9A=E9=80=80?= =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v1/order/StoreOrderController.php | 1 + crmeb/app/jobs/UnpaidOrderCancelJob.php | 8 +++--- .../order/StoreOrderRefundServices.php | 27 ++++++++++--------- .../app/services/order/StoreOrderServices.php | 24 ++++------------- 4 files changed, 24 insertions(+), 36 deletions(-) diff --git a/crmeb/app/api/controller/v1/order/StoreOrderController.php b/crmeb/app/api/controller/v1/order/StoreOrderController.php index f27603e93..74f282d8c 100644 --- a/crmeb/app/api/controller/v1/order/StoreOrderController.php +++ b/crmeb/app/api/controller/v1/order/StoreOrderController.php @@ -430,6 +430,7 @@ class StoreOrderController * 订单删除 * @param Request $request * @return mixed + * @throws \Psr\SimpleCache\InvalidArgumentException */ public function del(Request $request) { diff --git a/crmeb/app/jobs/UnpaidOrderCancelJob.php b/crmeb/app/jobs/UnpaidOrderCancelJob.php index 81fb32355..6e11539c4 100644 --- a/crmeb/app/jobs/UnpaidOrderCancelJob.php +++ b/crmeb/app/jobs/UnpaidOrderCancelJob.php @@ -33,7 +33,7 @@ class UnpaidOrderCancelJob extends BaseJobs public function doJob($orderId) { /** @var StoreOrderServices $services */ - $services = app()->make(StoreOrderServices::class); + $services = app()->make(StoreOrderServices::class); $orderInfo = $services->get($orderId); if (!$orderInfo) { return true; @@ -49,21 +49,21 @@ class UnpaidOrderCancelJob extends BaseJobs } /** @var StoreOrderCartInfoServices $cartServices */ $cartServices = app()->make(StoreOrderCartInfoServices::class); - $cartInfo = $cartServices->getOrderCartInfo($orderId); + $cartInfo = $cartServices->getOrderCartInfo($orderId); /** @var StoreOrderRefundServices $refundServices */ $refundServices = app()->make(StoreOrderRefundServices::class); try { $res = $refundServices->transaction(function () use ($orderInfo, $refundServices) { //回退积分和优惠卷 - $refundServices->integralAndCouponBack($orderInfo); + $refundServices->integralAndCouponBack($orderInfo, 'cancel'); //回退库存和销量 $refundServices->regressionStock($orderInfo); return true; }); if ($res) { $orderInfo->is_del = 1; - $orderInfo->mark = '订单未支付已超过系统预设时间'; + $orderInfo->mark = '订单未支付已超过系统预设时间'; $orderInfo->save(); } return $res; diff --git a/crmeb/app/services/order/StoreOrderRefundServices.php b/crmeb/app/services/order/StoreOrderRefundServices.php index 481886199..b0926ab9c 100644 --- a/crmeb/app/services/order/StoreOrderRefundServices.php +++ b/crmeb/app/services/order/StoreOrderRefundServices.php @@ -426,25 +426,26 @@ class StoreOrderRefundServices extends BaseServices /** * 回退积分和优惠卷 * @param $order + * @param string $type * @return bool */ - public function integralAndCouponBack($order) + public function integralAndCouponBack($order, $type = 'refund') { /** @var StoreOrderStatusServices $statusService */ $statusService = app()->make(StoreOrderStatusServices::class); $res = true; -// //回退优惠卷 拆分子订单不退优惠券 -// if (!$order['pid'] && $order['coupon_id'] && $order['coupon_price']) { -// /** @var StoreCouponUserServices $couponUserServices */ -// $couponUserServices = app()->make(StoreCouponUserServices::class); -// $res = $couponUserServices->recoverCoupon((int)$order['coupon_id']); -// $statusService->save([ -// 'oid' => $order['id'], -// 'change_type' => 'coupon_back', -// 'change_message' => '商品退优惠券', -// 'change_time' => time() -// ]); -// } + //取消的订单退回优惠券 + if ($type == 'cancel' && $order['coupon_id'] && $order['coupon_price']) { + /** @var StoreCouponUserServices $couponUserServices */ + $couponUserServices = app()->make(StoreCouponUserServices::class); + $res = $couponUserServices->recoverCoupon((int)$order['coupon_id']); + $statusService->save([ + 'oid' => $order['id'], + 'change_type' => 'coupon_back', + 'change_message' => '商品退优惠券', + 'change_time' => time() + ]); + } //回退积分 $order = $this->regressionIntegral($order); $statusService->save([ diff --git a/crmeb/app/services/order/StoreOrderServices.php b/crmeb/app/services/order/StoreOrderServices.php index 0933c9aa6..ebacd3ed3 100644 --- a/crmeb/app/services/order/StoreOrderServices.php +++ b/crmeb/app/services/order/StoreOrderServices.php @@ -1855,9 +1855,10 @@ HTML; /** * 删除订单 - * @param $uni - * @param $uid + * @param string $uni + * @param int $uid * @return bool + * @throws \Psr\SimpleCache\InvalidArgumentException */ public function removeOrder(string $uni, int $uid) { @@ -1879,21 +1880,6 @@ HTML; 'change_time' => time() ]); if ($order->save() && $res) { - //未支付和已退款的状态下才可以退积分退库存退优惠券 - if ($order['_status']['_type'] == 0 || $order['_status']['_type'] == -2) { - /** @var StoreOrderRefundServices $refundServices */ - $refundServices = app()->make(StoreOrderRefundServices::class); - $this->transaction(function () use ($order, $refundServices) { - //回退积分和优惠卷 - $res = $refundServices->integralAndCouponBack($order); - //回退库存 - $res = $res && $refundServices->regressionStock($order); - if (!$res) { - throw new ApiException(100020); - } - }); - - } return true; } else throw new ApiException(100020); @@ -1924,7 +1910,7 @@ HTML; $refundServices = app()->make(StoreOrderRefundServices::class); $this->transaction(function () use ($refundServices, $order) { - $res = $refundServices->integralAndCouponBack($order) && $refundServices->regressionStock($order); + $res = $refundServices->integralAndCouponBack($order, 'cancel') && $refundServices->regressionStock($order); $order->is_del = 1; if (!($res && $order->save())) { throw new ApiException(100020); @@ -2136,7 +2122,7 @@ HTML; try { $this->transaction(function () use ($order, $refundServices) { //回退积分和优惠卷 - $res = $refundServices->integralAndCouponBack($order); + $res = $refundServices->integralAndCouponBack($order, 'cancel'); //回退库存和销量 $res = $res && $refundServices->regressionStock($order); //修改订单状态