checkOrderStatusCommon($order)) { return false; } // 判断商品状态、库存 if (!$this->checkProductStatus($order['product'])) { return false; } // 判断拼团人数是否已满 by yj2023.7.29 if (!$this->checkPersonFull($order['product'])) { return false; } return true; } /** * 判断拼团人数是否已满 by yj2023.7.29 */ protected function checkPersonFull($productList) { foreach ($productList as $product) { //判断是否已满团 if(!empty($product['bill_source_id'])){ //获取团的人数 $bill_model = BillModel::detail($product['bill_source_id']); //后台设置的开团信息 $sku = AssembleSkuModel::detail($product['sku_source_id']); $asemble_product = Product::detail($sku['assemble_product_id']); if($bill_model["actual_people"] >= $asemble_product["assemble_num"]){ $this->error = "很抱歉,该团已拼满人,请重新拼另外一个团"; return false; } } } return true; } /** * 判断商品状态、库存 (未付款订单) */ protected function checkProductStatus($productList) { foreach ($productList as $product) { // 拼团商品sku信息 $assembleProductSku = AssembleSkuModel::detail($product['sku_source_id'], ['product']); $assembleProduct = $assembleProductSku['product']; // sku是否存在 if (empty($assembleProductSku)) { $this->error = "很抱歉,商品 [{$product['product_name']}] sku已不存在,请重新下单"; return false; } // 判断商品是否下架 if (empty($assembleProduct)) { $this->error = "很抱歉,商品 [{$product['product_name']}] 不存在或已删除"; return false; } // 付款减库存 if ($product['deduct_stock_type'] == DeductStockTypeEnum::PAYMENT && $product['total_num'] > $assembleProductSku['assemble_stock']) { $this->error = "很抱歉,商品 [{$product['product_name']}] 库存不足"; return false; } } return true; } }