MySQL实现三级分销经销商管理系统(mysql 三级分销)
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')
ID 姓名
联系电话 所在地
上级经销商 操作
@foreach ($distributors as $distributor)
{{ $distributor['id'] }} {{ $distributor['name'] }}
{{ $distributor['mobile'] }} {{ $distributor['location'] }}
{{ isset($distributor['parent']['name']) ? $distributor['parent']['name'] : '-' }}
@endforeach
@elseif ($tab == 'product')
ID 商品名称
商品描述 商品价格
操作
@foreach ($products as $product)
{{ $product['id'] }} {{ $product['name'] }}
{{ $product['description'] }} {{ $product['price'] }}
@endforeach
@elseif ($tab == 'order')
ID 经销商名称
商品名称 销售价格
订单状态 下单时间
@foreach ($orders as $order)
{{ $order['id'] }} {{ $order['distributor_name'] }}
{{ $order['product_name'] }} {{ $order['price'] }}
{{ $order['status'] }} {{ $order['create_time'] }}
@endforeach
@endif
这样我们就完成了MySQL实现的三级分销经销商管理系统。通过这个系统,我们可以更好地管理经销商和商品信息,生成订单并累计销售额。具体实现可以根据需求进行修改和完善。