商品SKU, 'quantity' => 10] * ] * @return array */ public function getAvailableCoupons(User $user, array $products): array { $coupons = $user->coupons()->onlyAvailable()->get(); $coupons->load(['ranges' => function ($query) { $query->isEnable(); }]); $availableCoupons = []; foreach ($coupons as $coupon) { // 是否满足券使用规则 $passes = false; // 可用优惠券的商品的总额 $amount = 0; foreach ($products as $product) { $sku = $product['sku']; if ($coupon->isSupport($sku)) { $passes = true; $amount += $sku->getRealPrice($user) * $product['quantity']; } } if ($passes && $amount >= $coupon->coupon_threshold) { $availableCoupons[] = $coupon; } } return $availableCoupons; } }