当前位置:首页 > PHP

php实现商品批发

2026-02-16 03:38:20PHP

PHP实现商品批发的核心逻辑

商品批发功能通常涉及批量价格计算、订单处理和数据展示。以下是实现的关键步骤:

数据库表设计

创建商品表和批发价格规则表是基础。商品表存储基本信息,批发价格规则表定义不同数量的价格阶梯。

商品表结构示例:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    retail_price DECIMAL(10,2),
    description TEXT
);

批发规则表结构:

CREATE TABLE wholesale_rules (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT,
    min_quantity INT,
    unit_price DECIMAL(10,2),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

批发价格计算逻辑

通过查询批发规则表实现动态价格计算。根据购买数量匹配对应的价格阶梯。

function calculateWholesalePrice($productId, $quantity) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

    // 获取所有适用于该商品的批发规则,按数量降序排列
    $stmt = $db->prepare("
        SELECT * FROM wholesale_rules 
        WHERE product_id = :product_id AND min_quantity <= :quantity
        ORDER BY min_quantity DESC
        LIMIT 1
    ");
    $stmt->execute([':product_id' => $productId, ':quantity' => $quantity]);
    $rule = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($rule) {
        return $quantity * $rule['unit_price'];
    } else {
        // 没有批发规则则使用零售价
        $stmt = $db->prepare("SELECT retail_price FROM products WHERE id = :product_id");
        $stmt->execute([':product_id' => $productId]);
        $product = $stmt->fetch(PDO::FETCH_ASSOC);
        return $quantity * $product['retail_price'];
    }
}

前端交互实现

使用JavaScript实现实时价格计算,提升用户体验。

<div class="product">
    <h3><?php echo $product['name']; ?></h3>
    <input type="number" id="quantity" min="1" value="1">
    <button onclick="calculatePrice(<?php echo $product['id']; ?>)">计算批发价</button>
    <div id="priceResult"></div>
</div>

<script>
function calculatePrice(productId) {
    const quantity = document.getElementById('quantity').value;
    fetch(`calculate_price.php?product_id=${productId}&quantity=${quantity}`)
        .then(response => response.json())
        .then(data => {
            document.getElementById('priceResult').innerHTML = 
                `总价: ${data.total_price}`;
        });
}
</script>

后端价格计算接口

创建独立的PHP接口处理价格计算请求。

// calculate_price.php
header('Content-Type: application/json');

$productId = $_GET['product_id'] ?? 0;
$quantity = $_GET['quantity'] ?? 1;

$totalPrice = calculateWholesalePrice($productId, $quantity);

echo json_encode([
    'product_id' => $productId,
    'quantity' => $quantity,
    'total_price' => number_format($totalPrice, 2)
]);

批量订单处理

批发订单通常包含多个商品和大量数量,需要特殊处理。

function createWholesaleOrder($customerId, $items) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

    try {
        $db->beginTransaction();

        // 创建订单主记录
        $stmt = $db->prepare("
            INSERT INTO orders (customer_id, order_date, status) 
            VALUES (:customer_id, NOW(), 'pending')
        ");
        $stmt->execute([':customer_id' => $customerId]);
        $orderId = $db->lastInsertId();

        // 添加订单明细
        foreach ($items as $item) {
            $price = calculateWholesalePrice($item['product_id'], $item['quantity']);

            $stmt = $db->prepare("
                INSERT INTO order_items (order_id, product_id, quantity, unit_price)
                VALUES (:order_id, :product_id, :quantity, :unit_price)
            ");
            $stmt->execute([
                ':order_id' => $orderId,
                ':product_id' => $item['product_id'],
                ':quantity' => $item['quantity'],
                ':unit_price' => $price / $item['quantity']
            ]);
        }

        $db->commit();
        return $orderId;
    } catch (Exception $e) {
        $db->rollBack();
        throw $e;
    }
}

数据可视化展示

为批发商提供销售数据统计视图,辅助决策。

php实现商品批发

function getWholesaleSalesReport($startDate, $endDate) {
    $db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

    $stmt = $db->prepare("
        SELECT p.name, SUM(oi.quantity) as total_quantity, 
               SUM(oi.quantity * oi.unit_price) as total_revenue
        FROM order_items oi
        JOIN orders o ON oi.order_id = o.id
        JOIN products p ON oi.product_id = p.id
        WHERE o.order_date BETWEEN :start_date AND :end_date
        GROUP BY oi.product_id
        ORDER BY total_revenue DESC
    ");
    $stmt->execute([
        ':start_date' => $startDate,
        ':end_date' => $endDate
    ]);

    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

以上实现涵盖了商品批发系统的主要功能模块,可根据实际需求进行调整和扩展。重点在于批发规则管理、批量价格计算和高效订单处理。数据库优化和缓存策略对大批量数据处理尤为重要。

标签: 商品php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节点。每个…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…