diff --git a/app/Service/Api/Coupon/CouponListService.php b/app/Service/Api/Coupon/CouponListService.php index 06c7593..4bb2ed1 100644 --- a/app/Service/Api/Coupon/CouponListService.php +++ b/app/Service/Api/Coupon/CouponListService.php @@ -35,7 +35,7 @@ class CouponListService extends BaseService */ public function handle(): array { - $limit = $this->request->input('limit',20); + $limit = (int)$this->request->input('limit',20); $data = $this->couponTemplateModel ->join('user_coupon', function ($join) { diff --git a/app/Service/ServiceTrait/Api/OrderTrait.php b/app/Service/ServiceTrait/Api/OrderTrait.php index ec6f15c..6c59fdc 100644 --- a/app/Service/ServiceTrait/Api/OrderTrait.php +++ b/app/Service/ServiceTrait/Api/OrderTrait.php @@ -390,20 +390,33 @@ trait OrderTrait if ($this->couponId <= 0 || empty($this->orderRes['coupon']) || $this->orderRes['coupon_id'] <= 0) return; if ($this->orderRes['coupon']['amount'] <= 0 && $this->orderRes['coupon']['coupon_type'] != CouponCode::COUPON_TYPE_INSTANT_REDUCTION) { - $orderMaxPrice = max(array_column($this->orderRes['good'],'price')); +// $orderMaxPrice = max(array_column($this->orderRes['good'],'price')); $this->orderRes['coupon']['amount'] = match ($this->orderRes['coupon']['coupon_type']) { CouponCode::COUPON_TYPE_INSTANT_REDUCTION => $this->orderRes['coupon']['amount'], - CouponCode::COUPON_TYPE_DISCOUNT => bcmul(bcdiv(bcsub("100",(string)$this->orderRes['coupon']['ratio'],2),"100",2),$orderMaxPrice,2), + CouponCode::COUPON_TYPE_DISCOUNT => bcmul( + bcdiv( + bcsub( + "100", + (string)$this->orderRes['coupon']['ratio'], + 2 + ), + "100", + 2 + ), + max(array_column($this->orderRes['good'],'price')), + 2 + ), default => 0 }; } - $this->orderRes['favorable_good_price'] = $this->orderRes['coupon']['amount']; + $this->orderRes['favorable_good_price'] = $this->orderRes['coupon']['coupon_type'] == CouponCode::COUPON_TYPE_INSTANT_REDUCTION ? + min($this->orderRes['coupon']['amount'], $this->orderRes['good_after_discount_price']) : + $this->orderRes['coupon']['amount']; $this->orderRes['good_after_discount_price'] = bcsub($this->orderRes['good_after_discount_price'],$this->orderRes['favorable_good_price'],2); $this->orderRes['actual_price'] = bcsub($this->orderRes['actual_price'],$this->orderRes['favorable_good_price'],2); } - /** * @return void */