diff --git a/app/Services/CouponService.php b/app/Services/CouponService.php index 238fa06e..ce428aff 100644 --- a/app/Services/CouponService.php +++ b/app/Services/CouponService.php @@ -98,7 +98,13 @@ class CouponService for ($i=0; $i<$coupon['num']; $i++) { $userCoupons[] = self::createUserCouponData($user->id, $coupon['coupon']); } + //更新对应券发送量,余量; + $coupon['coupon']->increment('sent', $coupon['num']); + if ($coupon['coupon']->limit > 0) {//限量才减少余量 + $coupon['coupon']->decrement('stock', $coupon['num']); + } } + UserCoupon::insert($userCoupons); } diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 1d0cce1a..7b5ba929 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -19,6 +19,7 @@ use App\Models\User; use App\Models\UserCoupon; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\DB; +use Throwable; class OrderService { @@ -742,8 +743,16 @@ class OrderService 'status' => Order::STATUS_PAID, ]); - // todo 处理购买分区商品送券 - $this->sendPartCoupon($order); + // 处理购买分区商品送券 + try { + DB::beginTransaction(); + $this->sendPartCoupon($order); + DB::commit(); + } catch (Throwable $th) { + DB::rollBack(); + report($th); + } + // todo 处理预收益