调整减免优惠
parent
25c401672b
commit
b8a9bab95d
|
|
@ -7,7 +7,6 @@ use App\Events\OrderPaid;
|
||||||
use App\Exceptions\BizException;
|
use App\Exceptions\BizException;
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
use App\Models\OrderLog;
|
use App\Models\OrderLog;
|
||||||
use App\Models\OrderProduct;
|
|
||||||
use App\Services\OrderService as EndpointOrderService;
|
use App\Services\OrderService as EndpointOrderService;
|
||||||
|
|
||||||
class OrderService
|
class OrderService
|
||||||
|
|
@ -33,29 +32,32 @@ class OrderService
|
||||||
//分解到订单中除赠品外的商品
|
//分解到订单中除赠品外的商品
|
||||||
$orderProducts = $order->products;
|
$orderProducts = $order->products;
|
||||||
$needReduceOrderProducts = [];
|
$needReduceOrderProducts = [];
|
||||||
|
$totalAmount = 0;
|
||||||
foreach ($orderProducts as $orderProduct) {
|
foreach ($orderProducts as $orderProduct) {
|
||||||
if (!$orderProduct->isGift()) {
|
if (!$orderProduct->isGift()) {
|
||||||
$needReduceOrderProducts[$orderProduct->id] = $orderProduct->total_amount;
|
$needReduceOrderProducts[] = $orderProduct;
|
||||||
|
$totalAmount += $orderProduct->total_amount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$i = count($needReduceOrderProducts);
|
$i = count($needReduceOrderProducts);
|
||||||
$totalAmount = array_sum($needReduceOrderProducts);
|
foreach ($needReduceOrderProducts as $reduceOrderProduct) {
|
||||||
foreach ($needReduceOrderProducts as $key => $reduceOrderProductAmount) {
|
|
||||||
$i --;
|
$i --;
|
||||||
|
|
||||||
if ($i > 0) {
|
if ($i > 0) {
|
||||||
$amount = (int) bcdiv(bcmul($needReduceAmount, $reduceOrderProductAmount, 0), $totalAmount, 2);
|
$amount = (int) bcdiv(bcmul($needReduceAmount, $reduceOrderProduct->total_amount, 0), $totalAmount, 2);
|
||||||
$needReduceAmount -= $amount;
|
$needReduceAmount -= $amount;
|
||||||
$totalAmount -= $reduceOrderProductAmount;
|
$totalAmount -= $reduceOrderProduct->total_amount;
|
||||||
} else {
|
} else {
|
||||||
$amount = $needReduceAmount;
|
$amount = $needReduceAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$newTotalAmount = $reduceOrderProduct->total_amount + $reduceOrderProduct->reduced_amount - $amount;
|
||||||
|
|
||||||
//更新订单商品的金额
|
//更新订单商品的金额
|
||||||
OrderProduct::where('id', $key)->update([
|
$reduceOrderProduct->update([
|
||||||
'reduced_amount' => $amount,
|
'reduced_amount' => $amount,
|
||||||
'total_amount' => $reduceOrderProductAmount - $amount,
|
'total_amount'=> $newTotalAmount,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue