order->orderGoods->unique('goods_id')->sum(function (PreOrderGoods $orderGoods) { return $this->totalAmount($orderGoods); }); return $result; } /** * 指定订单商品的单品满减金额 * @param PreOrderGoods $orderGoods * @return float */ private function totalAmount(PreOrderGoods $orderGoods) { // 求和所属订单中指定goods_id的订单商品支付金额 $amount = $this->order->orderGoods->where('goods_id', $orderGoods->goods_id)->sum(function (PreOrderGoods $preOrderGoods) { return $preOrderGoods->getPriceBefore($this->getCode()); }); if (is_null($orderGoods->goods->hasOneSale)) { return 0; } // order_goods的单品满减金额 return $orderGoods->goods->hasOneSale->getEnoughReductionAmount($amount); } }