MySQL实现三级分销经销商管理系统
随着市场经济的飞速发展,越来越多的企业开始采用三级分销模式进行销售,这种模式可以更好地拓展销售渠道,提高销售效益。为了更好地管理经销商和商品信息,这里提供一种MySQL实现的三级分销经销商管理系统。
我们需要设计数据库。这里以三个表为例:经销商表、商品表和订单表。经销商表记录了经销商的基本信息,如经销商ID、姓名、联系方式和所在地等。商品表记录了商品的基本信息,如商品ID、名称、描述和价格等。订单表记录了订单的基本信息,如订单ID、下单时间、订单状态和销售额等。下面是三个表的建表语句:
“`sql
CREATE TABLE IF NOT EXISTS `distributor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL COMMENT ‘姓名’,
`mobile` varchar(20) DEFAULT NULL COMMENT ‘联系电话’,
`location` varchar(100) DEFAULT NULL COMMENT ‘所在地’,
`pid` int(11) DEFAULT NULL COMMENT ‘父级ID’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT=’经销商表’;
CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL COMMENT ‘商品名称’,
`description` varchar(255) DEFAULT NULL COMMENT ‘商品描述’,
`price` decimal(10,2) DEFAULT NULL COMMENT ‘商品价格’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT=’商品表’;
CREATE TABLE IF NOT EXISTS `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`distributor_id` int(11) DEFAULT NULL COMMENT ‘经销商ID’,
`product_id` int(11) DEFAULT NULL COMMENT ‘商品ID’,
`price` decimal(10,2) DEFAULT NULL COMMENT ‘销售价格’,
`status` tinyint(4) DEFAULT NULL COMMENT ‘订单状态’,
`create_time` datetime DEFAULT NULL COMMENT ‘下单时间’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT=’订单表’;
在设计好数据库之后,我们开始编写PHP代码,实现经销商和商品的录入和查询功能。这里我们使用PDO来连接MySQL数据库并执行相关操作。下面是PHP代码片段:
```php
// 建立数据库连接
$dsn = \'mysql:host=localhost;dbname=test\';
$username = \'root\';
$password = \'123456\';
try {
$dbh = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
die(\"Error: \" . $e->getMessage());
}
// 查询经销商
function query_distributors($pid = null) {
global $dbh;
$sql = \'SELECT * FROM distributor\';
if ($pid !== null) {
$sql .= \" WHERE pid = $pid\";
}
$stmt = $dbh->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// 查询商品
function query_products() {
global $dbh;
$stmt = $dbh->prepare(\'SELECT * FROM product\');
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// 新增经销商
function add_distributor($name, $mobile, $location, $pid = null) {
global $dbh;
$stmt = $dbh->prepare(\'INSERT INTO distributor (name, mobile, location, pid) VALUES (?, ?, ?, ?)\');
$stmt->bindValue(1, $name);
$stmt->bindValue(2, $mobile);
$stmt->bindValue(3, $location);
$stmt->bindValue(4, $pid, PDO::PARAM_INT);
return $stmt->execute();
}
// 新增商品
function add_product($name, $description, $price) {
global $dbh;
$stmt = $dbh->prepare(\'INSERT INTO product (name, description, price) VALUES (?, ?, ?)\');
$stmt->bindValue(1, $name);
$stmt->bindValue(2, $description);
$stmt->bindValue(3, $price);
return $stmt->execute();
}
在实现经销商和商品的录入和查询功能之后,我们需要实现订单的生成和查询功能。由于三级分销模式中,经销商的销售额需要向上级经销商进行累计,所以在生成订单时需要递归查询所有上级经销商,并对它们的销售额进行累计。下面是PHP代码片段:
“`php
// 统计经销商和上级经销商的销售额
function count_sales($distributor_id, $product_id, $price, &$sales = []) {
global $dbh;
$stmt = $dbh->prepare(‘SELECT * FROM distributor WHERE id = ?’);
$stmt->bindValue(1, $distributor_id, PDO::PARAM_INT);
$stmt->execute();
$distributor = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$distributor) {
return false;
}
$distributor_sales = $price * 0.3;
if ($distributor[‘pid’] !== null) {
if (!isset($sales[$distributor[‘pid’]])) {
$sales[$distributor[‘pid’]] = 0;
}
$sales[$distributor[‘pid’]] += $distributor_sales;
count_sales($distributor[‘pid’], $product_id, $price, $sales);
}
return true;
}
// 生成订单
function add_order($distributor_id, $product_id, $price) {
global $dbh;
$sales = [$distributor_id => $price * 0.7];
count_sales($distributor_id, $product_id, $price, $sales);
foreach ($sales as $sid => $sale) {
$stmt = $dbh->prepare(‘INSERT INTO `order` (distributor_id, product_id, price, status, create_time) VALUES (?, ?, ?, ?, ?)’);
$stmt->bindValue(1, $sid, PDO::PARAM_INT);
$stmt->bindValue(2, $product_id, PDO::PARAM_INT);
$stmt->bindValue(3, $sale);
$stmt->bindValue(4, 1);
$stmt->bindValue(5, date(‘Y-m-d H:i:s’));
$stmt->execute();
}
return true;
}
// 查询订单
function query_orders($distributor_id = null) {
global $dbh;
$sql = ‘SELECT `order`.id, distributor.name AS distributor_name, product.name AS product_name, `order`.price, `order`.status, `order`.create_time FROM `order` JOIN distributor ON distributor.id = `order`.distributor_id JOIN product ON product.id = `order`.product_id’;
if ($distributor_id !== null) {
$sql .= ” WHERE distributor.id = $distributor_id”;
}
$stmt = $dbh->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
我们可以编写页面来展示三级分销经销商管理系统。这里使用了Bootstrap框架来实现页面的基本布局和样式。下面是PHP代码片段:
```php
三级分销经销商管理系统
三级分销经销商管理系统
@if ($tab == \'distributor\')
@foreach ($distributors as $distributor)
@endforeach
ID | 姓名 | 联系电话 | 所在地 | 上级经销商 | 操作 |
---|---|---|---|---|---|
{{ $distributor[\'id\'] }} | {{ $distributor[\'name\'] }} | {{ $distributor[\'mobile\'] }} | {{ $distributor[\'location\'] }} | {{ isset($distributor[\'parent\'][\'name\']) ? $distributor[\'parent\'][\'name\'] : \'-\' }} |
@elseif ($tab == \'product\')
@foreach ($products as $product)
@endforeach
ID | 商品名称 | 商品描述 | 商品价格 | 操作 |
---|---|---|---|---|
{{ $product[\'id\'] }} | {{ $product[\'name\'] }} | {{ $product[\'description\'] }} | {{ $product[\'price\'] }} |
@elseif ($tab == \'order\')
@foreach ($orders as $order)
@endforeach
ID | 经销商名称 | 商品名称 | 销售价格 | 订单状态 | 下单时间 |
---|---|---|---|---|---|
{{ $order[\'id\'] }} | {{ $order[\'distributor_name\'] }} | {{ $order[\'product_name\'] }} | {{ $order[\'price\'] }} | {{ $order[\'status\'] }} | {{ $order[\'create_time\'] }} |
@endif
这样我们就完成了MySQL实现的三级分销经销商管理系统。通过这个系统,我们可以更好地管理经销商和商品信息,生成订单并累计销售额。具体实现可以根据需求进行修改和完善。