设计一个支持三级分销、多等级分佣、团队奖励和自购返佣的系统,需要考虑到多个方面的数据存储和关系。以下是一个可能的数据库表结构设计方案:
1. 用户表(Users)存储用户的基本信息和分销关系。
CREATE TABLE Users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
parent_id INT DEFAULT NULL, -- 上级用户ID,NULL表示没有上级
level INT DEFAULT 1, -- 用户等级:1级、2级、3级
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
); 2. 订单表(Orders)存储订单信息,包括购买者和订单金额等。
CREATE TABLE Orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT, -- 购买者ID
total_amount DECIMAL(10, 2), -- 订单总金额
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
); 3. 佣金表(Commissions)存储每个订单的佣金分配情况。
CREATE TABLE Commissions (
commission_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
user_id INT, -- 佣金接收者ID
commission_amount DECIMAL(10, 2), -- 佣金金额
commission_type ENUM('self', 'level1', 'level2', 'level3', 'team'), -- 佣金类型
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES Orders(order_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id)
); 4. 佣金配置表(CommissionSettings)存储不同用户等级和销量段的佣金配置。
CREATE TABLE CommissionSettings (
setting_id INT PRIMARY KEY AUTO_INCREMENT,
level INT, -- 用户等级
min_sales DECIMAL(10, 2), -- 最低销量
max_sales DECIMAL(10, 2), -- 最高销量
self_commission_rate DECIMAL(5, 2), -- 自购返佣比例
level1_commission_rate DECIMAL(5, 2), -- 一级分销佣金比例
level2_commission_rate DECIMAL(5, 2), -- 二级分销佣金比例
level3_commission_rate DECIMAL(5, 2), -- 三级分销佣金比例
team_commission_rate DECIMAL(5, 2) -- 团队奖励比例
); 5. 团队表(Teams)存储团队信息和团队成员关系。
CREATE TABLE Teams (
team_id INT PRIMARY KEY AUTO_INCREMENT,
team_name VARCHAR(255) NOT NULL,
leader_id INT, -- 团队领导ID
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (leader_id) REFERENCES Users(user_id)
);
CREATE TABLE TeamMembers (
team_member_id INT PRIMARY KEY AUTO_INCREMENT,
team_id INT,
user_id INT,
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (team_id) REFERENCES Teams(team_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id)
); 6. 月度销量表(MonthlySales)存储每个用户每月的销售情况,用于计算团队奖励。
CREATE TABLE MonthlySales (
sales_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
month_year VARCHAR(7), -- 格式为YYYY-MM
total_sales DECIMAL(10, 2), -- 月度总销量
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
); 业务逻辑订单创建:
当一个用户下单时,创建一条Orders记录。根据用户的上级关系,计算并插入对应的Commissions记录。佣金计算:
自购返佣:根据CommissionSettings表中的配置,计算自购返佣金额,并插入Commissions表。分销佣金:根据用户的上级关系和CommissionSettings表中的配置,计算一级、二级和三级分销佣金,并插入Commissions表。团队奖励:每个月底根据MonthlySales表中的数据,计算团队奖励,并插入Commissions表。团队管理:
团队成员加入或离开时,更新TeamMembers表。团队领导变更时,更新Teams表。月度销量统计:
每个月底统计每个用户的月度销量,插入或更新MonthlySales表。示例数据插入假设有三个用户:A、B、C,A是B的上级,B是C的上级,A、B、C都在同一个团队中。
-- 插入用户
INSERT INTO Users (username, parent_id, level) VALUES ('A', NULL, 1);
INSERT INTO Users (username, parent_id, level) VALUES ('B', 1, 2);
INSERT INTO Users (username, parent_id, level) VALUES ('C', 2, 3);
-- 插入团队
INSERT INTO Teams (team_name, leader_id) VALUES ('Team1', 1);
INSERT INTO TeamMembers (team_id, user_id) VALUES (1, 1);
INSERT INTO TeamMembers (team_id, user_id) VALUES (1, 2);
INSERT INTO TeamMembers (team_id, user_id) VALUES (1, 3);
-- 插入佣金配置
INSERT INTO CommissionSettings (level, min_sales, max_sales, self_commission_rate, level1_commission_rate, level2_commission_rate, level3_commission_rate, team_commission_rate)
VALUES (1, 0, 1000, 0.05, 0.10, 0.05, 0.02, 0.03);
INSERT INTO CommissionSettings (level, min_sales, max_sales, self_commission_rate, level1_commission_rate, level2_commission_rate, level3_commission_rate, team_commission_rate)
VALUES (2, 1000, 5000, 0.07, 0.12, 0.06, 0.03, 0.04);
INSERT INTO CommissionSettings (level, min_sales, max_sales, self_commission_rate, level1_commission_rate, level2_commission_rate, level3_commission_rate, team_commission_rate)
VALUES (3, 5000, 10000, 0.10, 0.15, 0.08, 0.05, 0.05); 通过以上表结构和示例数据,可以实现一个支持三级分销、多等级分佣、团队奖励和自购返佣的系统。具体的业务逻辑和计算细节可以根据实际需求进行调整和扩展。
网友回复


