6
0
Fork 0
jiqu-library-server/app/Services/CouponService.php

54 lines
1.2 KiB
PHP

<?php
namespace App\Services;
use App\Models\User;
class CouponService
{
/**
* 根据SKU商品获取可用优惠券
*
* @param User $user
* @param array $products 至少包含以下内容
* [
* ['sku' => 商品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;
}
}