一个商品有多个商家在出售,如何在下单时能够按照顺序的扣除库存,比如要买10个商品 A商家库存满足了就直接扣,不满足就去扣B商家的,以此类推
写代码你直接参考一下
// 商品表
class Product {
protected $id;
protected $name;
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
// 获取商品名称
public function getName() {
return $this->name;
}
// 检查商家库存是否满足需求
public function checkStock($merchant, $quantity) {
// 根据商品和商家查询库存信息,这里假设库存信息存储在数据库中
// 返回库存数量
}
// 扣减商家库存
public function reduceStock($merchant, $quantity) {
// 根据商品和商家扣减库存,更新数据库中的库存信息
}
}
// 商家表
class Merchant {
protected $id;
protected $name;
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
// 获取商家名称
public function getName() {
return $this->name;
}
}
// 下单处理
function placeOrder($product, $quantity) {
$merchants = array(/* 商家列表 */);
foreach ($merchants as $merchant) {
$stock = $product->checkStock($merchant, $quantity);
if ($stock >= $quantity) {
// 库存充足,下单并扣减库存
$product->reduceStock($merchant, $quantity);
echo "成功下单,商品:{$product->getName()},商家:{$merchant->getName()},数量:{$quantity}\n";
return;
} elseif ($stock > 0) {
// 部分库存,下单并扣减库存
$product->reduceStock($merchant, $stock);
echo "成功下单,商品:{$product->getName()},商家:{$merchant->getName()},数量:{$stock}\n";
$quantity -= $stock;
}
}
// 所有商家库存不足
echo "库存不足,无法下单\n";
}
// 示例使用
$product = new Product(1, '商品A');
placeOrder($product, 10);