From 01ddd9d11f61facc85dc0d0b5b0763f9bcf6131b Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Fri, 23 Feb 2024 16:25:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E6=89=A3=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/store/coupon/StoreCouponUserDao.php | 20 ++++++++-- .../model/store/coupon/StoreCouponDetail.php | 38 +++++++++++++++++++ .../order/StoreOrderCreateRepository.php | 20 ++++++---- 3 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 app/common/model/store/coupon/StoreCouponDetail.php diff --git a/app/common/dao/store/coupon/StoreCouponUserDao.php b/app/common/dao/store/coupon/StoreCouponUserDao.php index e774b17b..da48fb36 100644 --- a/app/common/dao/store/coupon/StoreCouponUserDao.php +++ b/app/common/dao/store/coupon/StoreCouponUserDao.php @@ -16,6 +16,7 @@ namespace app\common\dao\store\coupon; use app\common\dao\BaseDao; use app\common\model\BaseModel; +use app\common\model\store\coupon\StoreCouponDetail; use app\common\model\store\coupon\StoreCouponUser; use app\common\repositories\store\coupon\StoreCouponRepository; use think\exception\ValidateException; @@ -179,11 +180,13 @@ class StoreCouponUserDao extends BaseDao * 扣减优惠券余额 * @param $id * @param $amount + * @param $order + * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function reduce($id, $amount) + public function reduce($id, $amount, $order) { $storeCouponUser = StoreCouponUser::where('coupon_user_id', $id)->find(); if (empty($storeCouponUser)) { @@ -200,6 +203,16 @@ class StoreCouponUserDao extends BaseDao if (!$storeCouponUser->save()) { throw new ValidateException('优惠券余额更新出错'); } + $detailModel = new StoreCouponDetail(); + $detailModel->uid = $order['uid']; + $detailModel->coupon_user_id = $id; + $detailModel->group_order_id = $order['group_order_id']; + $detailModel->order_id = $order['order_id'] ?? 0; + $detailModel->type = StoreCouponDetail::TYPE_EXPEND; + $detailModel->amount = $amount; + $detailModel->pay_price = $order['pay_price']; + $detailModel->create_time = time(); + $detailModel->save(); } /** @@ -269,15 +282,16 @@ class StoreCouponUserDao extends BaseDao /** * 批量扣除优惠券余额 * @param $coupons + * @param $order * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function reduceAll($coupons) + public function reduceAll($coupons, $order) { foreach ($coupons as $coupon) { - $this->reduce($coupon['coupon_user_id'], $coupon['coupon_price']); + $this->reduce($coupon['coupon_user_id'], $coupon['coupon_price'], $order); } } diff --git a/app/common/model/store/coupon/StoreCouponDetail.php b/app/common/model/store/coupon/StoreCouponDetail.php new file mode 100644 index 00000000..b3221f7a --- /dev/null +++ b/app/common/model/store/coupon/StoreCouponDetail.php @@ -0,0 +1,38 @@ +hasOne(StoreCoupon::class, 'coupon_id', 'coupon_id'); + } + +} diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index ba675938..5a2efb36 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -1190,9 +1190,6 @@ class StoreOrderCreateRepository extends StoreOrderRepository throw new ValidateException('库存不足'); } } - if (!empty($useCoupon[$order['mer_id']])) { - $storeCouponUserDao->reduceAll($order['cartInfo']['order']['user_used_coupon']); - } } if ($orderInfo['order_type'] == 10 && !app()->make(StoreDiscountRepository::class)->decStock($orderList[0]['cartInfo']['list'][0]['source_id'])) { @@ -1204,13 +1201,15 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'is_pay' => 1 ]); - //使用了平台优惠券 - if (!empty($useCoupon[0])) { - $storeCouponUserDao->reduce($useCoupon[0][0], $orderInfo['total_platform_coupon_price']); - } - //创建订单 $groupOrder = $storeGroupOrderRepository->create($groupOrder); + + + //使用了平台优惠券 + if (!empty($useCoupon[0])) { + $storeCouponUserDao->reduce($useCoupon[0][0], $orderInfo['total_platform_coupon_price'], $groupOrder); + } + $bills = []; if ($groupOrder['integral'] > 0) { @@ -1238,6 +1237,11 @@ class StoreOrderCreateRepository extends StoreOrderRepository //创建子订单 $_order = $this->dao->create($order); + + if (!empty($useCoupon[$order['mer_id']])) { + $storeCouponUserDao->reduceAll($cartInfo['order']['user_used_coupon'], $_order); + } + if ($order['integral'] > 0) { $bills[] = [ 'uid' => $uid,