diff --git a/app/common/dao/store/coupon/StoreCouponUserDao.php b/app/common/dao/store/coupon/StoreCouponUserDao.php index 72e04073..032fc6d8 100644 --- a/app/common/dao/store/coupon/StoreCouponUserDao.php +++ b/app/common/dao/store/coupon/StoreCouponUserDao.php @@ -207,7 +207,8 @@ class StoreCouponUserDao extends BaseDao if (!$storeCouponUser->save()) { throw new ValidateException('优惠券余额更新出错'); } - StoreCouponDetail::expend($order, $id, $amount); + $mark = '订单支付,使用' . $storeCouponUser->coupon_title; + StoreCouponDetail::expend($order, $id, $amount, $mark); } /** diff --git a/app/common/model/store/coupon/StoreCouponDetail.php b/app/common/model/store/coupon/StoreCouponDetail.php index 55f050b1..5dae5c84 100644 --- a/app/common/model/store/coupon/StoreCouponDetail.php +++ b/app/common/model/store/coupon/StoreCouponDetail.php @@ -47,9 +47,10 @@ class StoreCouponDetail extends BaseModel * @param $order * @param $id * @param $amount + * @param $mark * @return void */ - public static function expend($order, $id, $amount) + public static function expend($order, $id, $amount, $mark) { $detailModel = new self(); $detailModel->uid = $order['uid']; @@ -59,6 +60,7 @@ class StoreCouponDetail extends BaseModel $detailModel->type = StoreCouponDetail::TYPE_EXPEND; $detailModel->amount = $amount; $detailModel->pay_price = $order['pay_price']; + $detailModel->mark = $mark; $detailModel->create_time = time(); $detailModel->save(); } diff --git a/app/common/model/store/order/StoreOrderProduct.php b/app/common/model/store/order/StoreOrderProduct.php index e6422324..36efabe8 100644 --- a/app/common/model/store/order/StoreOrderProduct.php +++ b/app/common/model/store/order/StoreOrderProduct.php @@ -37,6 +37,11 @@ class StoreOrderProduct extends BaseModel return json_decode($value, true); } + public function getCouponInfoAttr($value) + { + return json_decode($value, true); + } + public function orderInfo() { return $this->hasOne(StoreOrder::class, 'order_id', 'order_id'); diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 33479af6..c338af9d 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -394,7 +394,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository [$payPrice, $useAmount, $couponUsed] = $storeCouponUserDao->couponByProduct($coupon['coupon_type']); $coupon_price = bcadd($coupon_price, $useAmount, 2); $_pay_price = bcsub($_pay_price, $useAmount, 2); - $cartCoupon[$cart['cart_id']] = ['coupon_price' => $useAmount, 'true_price' => $payPrice]; + $cartCoupon[$cart['cart_id']] = ['coupon_price' => $useAmount, 'coupon_user_id' => $coupon['coupon_user_id'], 'cart_id' => $cart['cart_id'], 'true_price' => $payPrice]; if (!isset($userUsedCoupon[$coupon['coupon_user_id']])) { $userUsedCoupon[$coupon['coupon_user_id']] = ['coupon_user_id' => $coupon['coupon_user_id'], 'coupon_price' => $useAmount]; } else { @@ -544,6 +544,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository //计算平台券优惠金额 // if ($total_true_price > 0) { + $cartCoupon = array_values($cartCoupon); $StoreCouponUser = app()->make(StoreCouponUserRepository::class); $platformCoupon = $StoreCouponUser->validUserPlatformCoupon($uid); if ($enabledPlatformCoupon && count($platformCoupon)) { @@ -680,6 +681,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository } else { $couponPrice = min(max(0.01, bcmul($_coupon_price, bcdiv($cart['true_price'], $platformCouponRate['price'], 6), 2)), $cart['true_price']); } + $cartCoupon[] = ['coupon_price' => $couponPrice, 'coupon_user_id' => $platformCouponRate['id'], 'cart_id' => $cart['cart_id']]; $platformCouponRate['coupon_price'] = bcsub($platformCouponRate['coupon_price'], $couponPrice, 2); $cart['true_price'] = bcsub($cart['true_price'], $couponPrice, 2); $cart['platform_coupon_price'] = $couponPrice; @@ -867,7 +869,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'useIntegral', 'key', 'order_refund_switch', - 'order' + 'order', + 'cartCoupon' ) + ['allow_address' => !$allow_no_address, 'order_delivery_status' => $orderDeliveryStatus]; Cache::set('order_create_cache' . $uid . '_' . $key, $data, 600); return $data; @@ -1203,6 +1206,12 @@ class StoreOrderCreateRepository extends StoreOrderRepository $orderProduct = []; $orderStatus = []; + $cartCouponPrice = []; + foreach ($orderInfo['cartCoupon'] as $item) { + $cartId = $item['cart_id']; + unset($item['true_price'], $item['cart_id']); + $cartCouponPrice[$cartId][] = $item; + } foreach ($orderList as $order) { $cartInfo = $order['cartInfo']; unset($order['cartInfo']); @@ -1324,6 +1333,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'product_type' => $cart['product_type'], 'cart_info' => json_encode($order_cart), 'refund_switch' => $cart['refund_switch'], + 'coupon_info' => json_encode($cartCouponPrice[$cart['cart_id']] ?? []), ]; } diff --git a/app/common/repositories/store/order/StoreRefundOrderRepository.php b/app/common/repositories/store/order/StoreRefundOrderRepository.php index 5b845848..d5fe483e 100644 --- a/app/common/repositories/store/order/StoreRefundOrderRepository.php +++ b/app/common/repositories/store/order/StoreRefundOrderRepository.php @@ -14,6 +14,7 @@ namespace app\common\repositories\store\order; +use app\common\dao\store\coupon\StoreCouponUserDao; use app\common\dao\store\order\StoreRefundOrderDao; use app\common\model\store\order\StoreOrder; use app\common\model\store\order\StoreRefundOrder; @@ -1301,6 +1302,18 @@ class StoreRefundOrderRepository extends BaseRepository Queue::push(SendSmsJob::class, ['tempId' => 'REFUND_CONFORM_CODE', 'id' => $refundOrder->refund_order_id]); $this->descBrokerage($refundOrder); + //退店铺抵扣券和平台购物卡 + $storeCouponUserDao = new StoreCouponUserDao(); + foreach ($refundOrder->refundProduct as $refundProduct) { + $orderProduct = $refundProduct->product; + if (!empty($orderProduct['coupon_info'])) { + foreach ($orderProduct['coupon_info'] as $coupon) { + $mark = '订单退款'; + $storeCouponUserDao->increase($coupon['coupon_user_id'], $coupon['coupon_price'], $refundOrder->order, $mark); + } + } + } + //退回平台优惠 if ($refundOrder->platform_refund_price > 0) { if ($refundOrder->order->firstProfitsharing) {