php一个商品多个商家处理库存

一个商品有多个商家在出售,如何在下单时能够按照顺序的扣除库存,比如要买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);