where(["order_id"=>$orderId])->select()->toArray(); $hotelList = $hotelModel->where(["order_id"=>$orderId])->select()->toArray(); $amount = 0; $cost = 0; foreach ($itemList as $item) { $amount += $item['total_price']; $cost+= $item['total_cost']; } foreach ($hotelList as $hotel) { $amount += $hotel['total_price']; $cost += $hotel["total_cost"]; } //更新金额 OrderMain::update(["total_amount"=>$amount,"cost_amount"=>$cost])->where(["id"=>$orderId]); } /** * 设置子订单金额 * @param int $subOrderId * @param string $prodType * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ private static function setSubOrderAmount( int $subOrderId,string $prodType) { $purchaseModel = new Purchase(); $purchaseList = $purchaseModel->where(["order_detail_id"=>$subOrderId,"del_flag"=>0])->select()->toArray(); $cost = 0; $amount = 0; foreach ($purchaseList as $purchase) { $cost += $purchase['total_cost']; $amount += $purchase['total_price']; } if ($prodType == "hotel") { OrderHotel::update(["total_price"=>$amount,"total_cost"=>$cost])->where(["id"=>$subOrderId]); } else { OrderItem::update(["total_price"=>$amount,"total_cost"=>$cost])->where(["id"=>$subOrderId]); } } /** * 设置采购单/子订单/主订单 金额 * @param Purchase $purchase * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function setPurchase(Purchase $purchase){ $purchasePrice = new PurchasePrice(); $purchasePriceList = $purchasePrice->where(["purchase_id"=>$purchase["id"],"del_flag"=>0])->select()->toArray(); $cost = 0; $amount = 0; foreach ($purchasePriceList as $price) { $cost += $price['cost'] * $price["cnt"]; $amount += $price['price'] * $price["cnt"]; } Purchase::update(["total_price"=>$amount,["total_cost"=>$cost]])->where(["id"=>$purchase['id']]); //更新子表 static::setSubOrderAmount($purchase['order_detail_id'], $purchase['prod_type']); //更新主表金额 static::setOrderAmount($purchase['order_id']); } }