Skip to content

多多多宝数据库表结构分析

基于 docs/duo.sql 文件分析
分析时间:2025-10-09
数据库:MySQL 5.5.60
字符集:utf8_unicode_ci


📊 概览

该系统共包含 31 张数据表,是一个基于拼多多多多客 API 的电商 CPS(按销售付费)推广平台,支持多级分销、地域代理和用户晋升体系。

表分类统计

分类表数量说明
用户相关4用户信息、登录令牌、验证码、邀请码
订单与收益3多多客订单、资金流水、提现记录
地域代理3城市代理、代理申请、店铺码
晋升与等级2晋升规则、晋升记录
内容管理6轮播图、活动、背景图、问答、热搜
支付相关3支付订单、积分购买、积分流水
物料与商品3物料活动、物料商品、物料订单
批次管理2拉新批次、拉新订单
购物车2购物车主表、购物车商品
系统管理3管理员、商品分类、其他

1️⃣ 用户相关表(User Management)

pdd_user - 用户主表 ⭐️⭐️⭐️

核心业务表,存储用户基本信息、等级、地理位置和推广关系。

字段类型说明
idint(11)主键
unionidvarchar(255)微信 unionid
openidvarchar(255)微信 openid(用于小程序登录)
nicknamevarchar(255)昵称
avatarvarchar(255)头像 URL
usernamevarchar(20)手机号码
invitation_codevarchar(30)邀请码(6位,可能是靓号)
relation_idvarchar(100)多多客推广位 ID(格式:PID_ADZONE_ID)
reg_timebigint(20)注册时间戳
level_idtinyint(4)用户等级(0普通/1合伙人/2高级总监/3市代理)
lngdecimal(11,6)经度
latdecimal(11,6)纬度
act_city_codevarchar(255)实际所在城市编码
town_codeint(11)所属镇编码
district_codeint(11)所属县/区编码
city_codeint(11)所属市编码
inviter_user_idint(11)邀请人用户 ID(构建推广关系链)
upgrade_timebigint(20)升级时间
statustinyint(4)账号状态(0正常/1禁用)
alipay_accountvarchar(100)支付宝账号(用于提现)
rel_namevarchar(100)真实姓名
is_knownvarchar(255)已知城市列表(逗号分隔)
store_codevarchar(30)所属店铺码

核心业务逻辑:

  • 分级体系:普通用户 → 合伙人(累计佣金≥100元) → 高级总监(≥500元) → 市代理(申请审核)
  • 地域化管理:基于城市/区县/镇的三级地域代理体系
  • 推广关系链:通过 inviter_user_id 构建无限层级的邀请树
  • 多多客集成:每个用户拥有独立的 relation_id(多多客推广位),用于订单追踪和佣金结算

数据示例:

sql
-- 用户 ID: 3, 昵称: 希浠爸, 手机: 18854353396
-- 邀请码: 252653, 推广位: 9322052_120050393
-- 等级: 0(普通), 邀请人: 用户4, 地区: 滨州市滨城区

pdd_token - 用户登录令牌表

存储用户登录会话令牌,用于 API 鉴权。

字段类型说明
idint(11)主键
user_idint(11)用户 ID
tokenvarchar(255)登录令牌(UUID 或 JWT)
create_timebigint(20)创建时间戳

使用场景:

  • 用户登录后生成 token
  • API 请求携带 token 验证身份(Header: Authorization: Token xxx

pdd_telcode - 手机验证码表

存储手机短信验证码,用于登录、注册、修改手机号等场景。

字段类型说明
idint(11)主键
phonevarchar(20)手机号码
codevarchar(10)验证码(6位数字)
createtimebigint(20)创建时间戳

安全建议:

  • 添加过期时间字段(如 5 分钟有效期)
  • 添加验证次数限制字段(防止暴力破解)
  • 验证成功后标记为已使用

pdd_goodinvitatercode - 优质邀请码池

预置了大量靓号邀请码(如 000001, 111111, 888888 等),用于分配给特殊用户。

字段类型说明
idint(11)主键
codevarchar(255)6位邀请码

数据特点:

  • 共约 200 条靓号码(豹子号、顺子号、对称号等)
  • 示例:000001, 100000, 111111, 222222, 123456, 888888

使用场景:

  • 新用户注册时从池中随机抽取未使用的靓号
  • 或为 VIP 用户手动分配特殊邀请码

2️⃣ 订单与收益表(Order & Income)

pdd_order - 多多客订单表 ⭐️⭐️⭐️

核心业务表,存储从多多客 API 同步的订单数据。

字段类型说明
idint(11)主键
trade_parent_idvarchar(255)父订单 ID(用于关联子订单)
trade_idvarchar(255)淘宝订单号(唯一标识)
num_iidvarchar(255)商品 ID
item_titlevarchar(255)商品标题
item_numint(11)购买数量
pricedouble商品单价
pay_pricedouble实际支付金额
seller_nickvarchar(255)卖家昵称
seller_shop_titlevarchar(255)店铺名称
commissiondouble预估佣金(多多客佣金)
commission_ratedouble佣金比率
unidvarchar(255)会员运营 ID
create_timebigint(20)订单创建时间
earning_timebigint(20)结算时间(佣金到账时间)
tk_statusint(11)订单状态(3付款/12结算/13失效/14成功/5已结算)
tk3rd_typevarchar(255)第三方服务类型
tk3rd_pub_idvarchar(255)第三方推广者 ID
order_typevarchar(255)订单类型
income_ratedouble分成比率(推广者分成比例)
pub_share_pre_feedouble推广者预估收益
subsidy_ratedouble补贴比率
subsidy_typeint(11)补贴类型
subsidy_feedouble补贴金额
terminal_typeint(11)终端类型(PC/移动)
auction_categoryvarchar(255)商品类目
site_idvarchar(255)推广位 ID
site_namevarchar(255)推广位名称
adzone_idvarchar(255)广告位 ID
adzone_namevarchar(255)广告位名称
alipay_total_pricedouble支付宝实付金额
total_commission_ratedouble总佣金比率
total_commission_feedouble总佣金
relation_idvarchar(255)推广位 ID(关联 pdd_user.relation_id)
special_idvarchar(255)特殊 ID
click_timebigint(6)点击时间
pict_urlvarchar(255)商品主图 URL
user_idint(11)推广用户 ID
statusint(11)特殊订单标识(0普通/1零元购/2一元购)
subsidydecimal(11,2)平台补贴金额
bar_idint(11)未知字段

订单状态流转:

tk_status = 3  (已付款) → 
tk_status = 12 (已结算) → 
tk_status = 14 (结算成功) / tk_status = 13 (订单失效)

核心业务逻辑:

  1. 订单同步:定时调用多多客 API 拉取订单数据
  2. 佣金计算pub_share_pre_fee = 商品佣金 × income_rate
  3. 分润触发:订单结算成功后,写入 pdd_money 表进行分润

数据示例:

sql
-- 订单号: 191024-064573277250541
-- 商品: 金樱花豆豉鲮鱼罐头, 价格: 29.9元
-- 佣金: 1.5元, 分成比率: 5%, 推广者收益: 0.9元
-- 用户ID: 3, 状态: 5(已结算)

pdd_money - 资金流水表 ⭐️⭐️⭐️

最核心的表,记录所有用户的资金变动,包括佣金、提成、提现等。

字段类型说明
idint(11)主键
money_typeint(11)资金类型(1拉新/2佣金/3提成/4补贴/5维权/6取现)
order_numvarchar(255)关联订单号(淘宝订单号或系统订单号)
countdouble金额(正数为收入,负数为支出)
create_timebigint(20)创建时间
user_idint(11)用户 ID
statusint(11)结算状态(0预估/1已结算)
tx_idint(11)提现记录 ID(关联 pdd_withdraw.id)
settle_timebigint(20)结算时间
settle_monthint(11)结算月份(YYYYMM)
city_codeint(11)用户所在城市编码
townint(11)镇代理用户 ID
districtint(11)县/区代理用户 ID
cityint(11)市代理用户 ID

资金类型详解:

  • 1 - 拉新:邀请新用户注册的奖励(如首单奖励)
  • 2 - 佣金:自购或直接下级购买产生的佣金收益
  • 3 - 提成:上级从下级收益中抽取的提成(分二级/三级)
  • 4 - 补贴:平台活动补贴(如零元购、满减活动)
  • 5 - 维权:订单维权/退款导致的扣款
  • 6 - 取现:用户提现扣款(金额为负数)

分润机制示例:

假设用户 A 邀请了用户 B,B 又邀请了 C,C 购买商品产生 10 元佣金:

订单佣金: 10元

→ C 获得佣金(money_type=2): 10 * 60% = 6元
→ B 获得提成(money_type=3): 10 * 20% = 2元  (C的上级)
→ A 获得提成(money_type=3): 10 * 10% = 1元  (C的上上级)
→ 地区代理分成(money_type=2): 10 * 10% = 1元

地域代理分成逻辑:

  • 如果用户 C 属于某个城市代理,则该代理也会获得一定比例的分成
  • 通过 city_code, town, district, city 字段记录地区代理信息

数据示例:

sql
-- 用户3的佣金收益
INSERT INTO `pdd_money` VALUES 
(1097, 2, '191024-064573277250541', 0.9, 1571887737, 3, 1, 0, 1574289369, null, 371602, 0, 371602, 0);
-- money_type=2(佣金), count=0.9元, status=1(已结算), city_code=371602(滨州滨城区)

-- 用户2获得提成
INSERT INTO `pdd_money` VALUES 
(1098, 3, '191024-064573277250541', 0.18, 1571887737, 2, 1, 0, 1574289369, null, 0, 0, 0, 0);
-- money_type=3(提成), count=0.18元

-- 用户2提现扣款
INSERT INTO `pdd_money` VALUES 
(1091, 6, null, -1.35, 1571992112, 2, 1, 96, 1571992113, null, 0, 0, 0, 0);
-- money_type=6(取现), count=-1.35元, tx_id=96(关联提现记录)

pdd_withdraw - 提现记录表

存储用户的提现申请和处理记录。

字段类型说明
idint(11)主键
order_idvarchar(50)系统提现订单号
trade_idvarchar(50)微信付款单号(成功后返回)
submit_timebigint(6)提交时间
dispose_timebigint(6)处理时间
statusint(11)提现状态(0未审核/1成功/2失败)
moneydouble申请提现金额
realmoneydouble实际到账金额(扣除手续费后)
user_idint(11)用户 ID
user_accountvarchar(100)微信昵称
msgvarchar(100)失败原因

提现流程:

1. 用户申请提现 → 创建 pdd_withdraw 记录(status=0)
2. 同步扣减余额 → pdd_money 插入一条 money_type=6 的负数记录
3. 管理员审核 → 调用微信企业付款到零钱 API
4. 转账成功 → 更新 status=1, trade_id=微信付款单号
5. 转账失败 → 更新 status=2, msg=失败原因, 退回余额

手续费计算: 根据数据示例,系统收取 0% 手续费money = realmoney):

sql
-- money: 1.35元, realmoney: 1.35元 → 无手续费
-- money: 14.48元, realmoney: 14.48元 → 无手续费

注意事项:

  • 提现审核需人工处理(后台管理系统)
  • 提现方式:微信企业付款到零钱
  • 需要用户已完成微信授权登录(获取openid)
  • 失败原因可能包括:openid不存在、账号被冻结、商户余额不足等

3️⃣ 地域代理表(Regional Agency)

pdd_city - 城市代理表

存储已开通的代理城市,支持市/县/镇三级代理体系。

字段类型说明
idint(11)主键
city_namevarchar(50)城市名称
city_codeint(11)城市编码(6位行政区划代码)
create_timebigint(20)开通时间
pidint(11)上级代理 ID(构建层级关系)
city_leveltinyint(4)代理级别(1镇/2县区/3市)
lngdecimal(20,5)经度
latdecimal(20,5)纬度

层级关系示例:

山东省
├── 滨州市 (city_level=3, city_code=371600, pid=0)
│   ├── 滨城区 (city_level=2, city_code=371602, pid=1)
│   │   └── 市中街道 (city_level=1, city_code=371602001, pid=32)
│   ├── 惠民县 (city_level=2, city_code=371621, pid=1)
│   ├── 沾化区 (city_level=2, city_code=371603, pid=1)
│   │   └── 大高镇 (city_level=1, city_code=371603105, pid=13)
│   └── ...
├── 济南市 (city_level=3, city_code=370100, pid=0)
│   ├── 历下区 (city_level=2, city_code=370102, pid=2)
│   ├── 历城区 (city_level=2, city_code=370112, pid=2)
│   └── ...
└── ...

代理分成逻辑:

  • 当用户完成订单后,系统根据用户的 city_code 查询所属代理
  • 市代理、县代理、镇代理分别按比例获得分成(记录在 pdd_money 表)

数据覆盖:

  • 主要覆盖山东省(滨州、济南、青岛、烟台等)
  • 部分其他省市(上海、北京、广州等)

pdd_apply - 代理申请表

存储用户申请成为城市代理的记录。

字段类型说明
idint(11)主键
uidint(11)申请用户 ID
teamvarchar(255)团队名称
has_companytinyint(4)是否有公司(0无/1有)
company_addressvarchar(255)公司地址
companyvarchar(255)公司名称
addressvarchar(255)个人地址
namevarchar(60)真实姓名
phonebigint(20)联系电话
wxvarchar(100)微信号
create_timebigint(20)提交时间
statustinyint(4)审核状态(0未审核/1通过/2未通过)
dispose_timebigint(20)处理时间
city_namevarchar(100)代理城市名称
city_codeint(11)代理城市编码
apply_cityvarchar(100)申请的城市(文本)

申请流程:

1. 用户填写代理申请表(团队名称、公司信息、联系方式、申请城市)
2. 提交申请 → pdd_apply 插入记录(status=0)
3. 管理员审核 → 更新 status=1(通过) 或 status=2(拒绝)
4. 审核通过 → 更新 pdd_user.level_id=3(市代理)

数据示例:

sql
-- 用户3申请滨州市代理
INSERT INTO `pdd_apply` VALUES 
(20, 3, '哈罗团队', 1, '富泰国际·中央公园', '哈罗科技', '大厦门市', 
 '时春磊', 18854353396, 'haluoa', 1572494399, 1, 1572494454, '滨州', 371600, '哈罗市');
-- status=1(已通过), city_code=371600(滨州市)

pdd_storecode - 店铺码表

为线下实体店生成专属推广码,扫码购物佣金归店铺所有者。

字段类型说明
idint(11)主键
codevarchar(50)店铺码(8位随机字符串)
uidint(11)店铺所有者用户 ID
create_timebigint(20)创建时间

使用场景:

  • 用户申请生成店铺码(一个用户可以有多个店铺码)
  • 打印成二维码贴在店铺收银台
  • 顾客扫码购物 → 订单归属于店铺所有者 → 店主获得佣金

数据示例:

sql
-- 用户90的店铺码
INSERT INTO `pdd_storecode` VALUES (2, 'j02ucIrG', 90, 1574039033);

4️⃣ 晋升与等级表(Upgrade System)

pdd_upgrade - 晋升规则表

定义不同等级的晋升条件。

字段类型说明
idint(11)主键
level_idint(11)目标等级 ID
moneydecimal(11,2)考核金额(累计佣金要求)
createtimebigint(20)政策创建时间

现行晋升标准:

sql
INSERT INTO `pdd_upgrade` VALUES (6, 2, 100.00, 12121);   -- 合伙人:累计佣金≥100元
INSERT INTO `pdd_upgrade` VALUES (7, 3, 500.00, 121211);  -- 高级总监:累计佣金≥500元

等级体系:

  • level_id = 0:普通用户(默认)
  • level_id = 1:未使用(可能是预留等级)
  • level_id = 2:合伙人(Partner)
  • level_id = 3:高级总监(Senior Director)/ 市代理

晋升机制:

  • 系统定时计算用户累计佣金(pdd_moneymoney_type=2 的金额总和)
  • 满足条件自动晋升,写入 pdd_upgrade_list 记录
  • 更新 pdd_user.level_idupgrade_time

pdd_upgrade_list - 晋升记录表

记录用户的晋升历史。

字段类型说明
idint(11)主键
uidint(11)用户 ID
level_idint(11)晋升到的等级
upgrade_timebigint(20)晋升时间
pre_feedecimal(20,4)30天预估收益(考核指标)
moneydecimal(20,4)考核金额

数据示例:

sql
-- 用户3晋升为合伙人
INSERT INTO `pdd_upgrade_list` VALUES (2, 3, 2, 1573936621, 1.2540, 100.0000);
-- 30天预估收益: 1.254元, 考核金额: 100元

-- 用户3降级为普通用户(level_id=0)
INSERT INTO `pdd_upgrade_list` VALUES (4, 3, 0, 1576615021, null, 100.0000);

注意事项:

  • 数据中存在降级记录(level_id=0),可能由于违规或主动申请
  • pre_fee 字段用于考核活跃度,但部分记录为 null

5️⃣ 内容管理表(Content Management)

pdd_banner - 轮播图表

首页轮播图配置。

字段类型说明
idint(11)主键
titlevarchar(200)标题
urlvarchar(255)点击跳转链接
picvarchar(255)图片 URL

pdd_act - 活动入口表

首页展示的特色活动入口(如 1.9包邮、今日爆款)。

字段类型说明
idint(11)主键
titlevarchar(200)活动标题
picvarchar(255)图标 URL
sidtinyint(4)活动类型(0=1.9包邮/1=今日爆款/2=品牌清仓)
hpicvarchar(255)头部背景图

预设活动:

sql
INSERT INTO `pdd_act` VALUES (1, '1.9包邮', '.../4.png', 0, '.../8.jpg');
INSERT INTO `pdd_act` VALUES (2, '今日爆款', '.../3.png', 1, '.../7.jpg');
INSERT INTO `pdd_act` VALUES (3, '品牌清仓', '.../2.png', 2, '.../6.jpg');
INSERT INTO `pdd_act` VALUES (4, '实时热销', '.../1.png', 1, '.../5.jpg');

pdd_bg - 背景图表

可能用于页面装饰或主题切换。

字段类型说明
idint(11)主键
picvarchar(255)图片路径
pic1varchar(255)备用图片路径
pxtinyint(4)排序
createtimebigint(20)添加时间

pdd_question - 常见问题表

问答中心内容。

字段类型说明
idint(11)主键
titlevarchar(200)问题标题
contenttext答案内容(支持富文本)
sort_idint(11)分类 ID(关联 pdd_fl)
create_timebigint(20)创建时间

pdd_fl - 问题分类表

问答分类目录。

字段类型说明
idint(11)主键
sort_namevarchar(50)分类名称

预设分类:

  1. 订单相关
  2. 优惠相关
  3. 收益相关
  4. 提现相关
  5. 分享相关
  6. 其他问题

pdd_hotword - 热搜词表

首页搜索框下方的热门搜索词。

字段类型说明
idint(11)主键
wordvarchar(100)热搜关键词
create_timebigint(20)创建时间

pdd_search - 搜索记录表

记录用户的搜索行为,用于数据分析和热词统计。

字段类型说明
idint(11)主键
keywordvarchar(100)搜索关键词
uidint(11)用户 ID
create_timebigint(20)搜索时间

6️⃣ 支付相关表(Payment)

pdd_pay - 支付订单表

通用支付订单表(目前无数据,可能功能未启用)。

字段类型说明
idint(11)主键
order_idvarchar(100)系统订单号
trade_idvarchar(100)第三方支付订单号
user_idint(11)支付用户 ID
pay_idtinyint(4)支付方式(0支付宝/1微信)
moneydecimal(11,2)支付金额
statustinyint(4)支付状态(0未支付/1已支付)
pay_timebigint(20)支付时间
create_timebigint(20)订单创建时间

pdd_pay_points - 积分购买订单表

用户购买积分的订单记录。

字段类型说明
idint(11)主键
orderidvarchar(50)订单 ID
tradeidvarchar(50)支付宝交易号
uidint(11)购买用户 ID
pointsdecimal(11,2)购买积分数
moneydecimal(11,2)支付金额
createtimebigint(20)生成时间
paytimebigint(20)支付时间
statustinyint(4)支付状态(0未支付/1已支付)

积分价格: 1 元 = 1 积分

数据示例:

sql
-- 用户91购买68积分
INSERT INTO `pdd_pay_points` VALUES 
(38, '82531574065023912482', null, 91, 68.00, 68.00, 1574065023, null, 0);
-- status=0(未支付)

注意: 数据中所有订单均未支付(status=0),功能可能未正式上线。


pdd_points - 积分流水表

记录积分的增加和消耗。

字段类型说明
idint(11)主键
uidint(11)用户 ID
pointsint(11)积分变动(正数增加/负数消耗)
orderidint(11)关联订单 ID
tagtinyint(4)操作类型(0消耗/1增加)
createtimebigint(20)时间

数据示例:

sql
-- 用户3初始积分
INSERT INTO `pdd_points` VALUES (31, 3, 100000, null, null, null);

-- 消耗3000积分
INSERT INTO `pdd_points` VALUES (32, 3, -3000, 14, 0, 1572076841);

7️⃣ 物料与商品表(Material & Product)

pdd_material - 物料活动表

存储促销活动信息。

字段类型说明
idint(11)主键
mat_namevarchar(100)物料名称
mat_start_timebigint(20)活动开始时间
mat_end_timebigint(20)活动结束时间
statustinyint(4)活动状态

pdd_material_goods - 物料商品关联表

活动关联的商品列表。

字段类型说明
idint(11)主键
mat_idint(11)物料 ID
goods_idvarchar(50)商品 ID
goods_namevarchar(200)商品名称
goods_picvarchar(255)商品图片
goods_pricedecimal(10,2)商品价格

pdd_material_order - 物料订单表

参与活动的订单记录。

字段类型说明
idint(11)主键
mat_goods_idint(11)物料商品 ID
user_idint(11)用户 ID
order_numvarchar(100)订单号
statustinyint(4)订单状态
create_timebigint(20)创建时间

8️⃣ 批次管理表(Batch Management)

pdd_batch - 拉新批次表

记录批量拉新活动。

字段类型说明
idint(11)主键
batch_namevarchar(200)批次名称(日期格式:YYYYMMDD)
numint(11)拉新目标数量
create_timebigint(20)创建时间

数据示例:

sql
INSERT INTO `pdd_batch` VALUES (1, '20191115', 10, 1573802947);  -- 2019年11月15日批次,目标10人
INSERT INTO `pdd_batch` VALUES (2, '20191118', 10, 1574046349);

pdd_pullorder - 拉新订单表

记录拉新活动中的邀请关系(数据量极大,约 22.9 万条记录)。

字段类型说明
idint(11)主键
batch_idint(11)批次 ID
uidint(11)被邀请用户 ID
inviter_uidint(11)邀请人用户 ID
create_timebigint(20)创建时间
statustinyint(4)状态

用途: 用于拉新活动的数据统计和奖励发放。


9️⃣ 购物车相关表(Shopping Cart)

pdd_cart - 购物车主表

字段类型说明
idint(11)主键
uidint(11)用户 ID
zpointsint(11)所需积分
znumint(11)商品总数量
createtimebigint(20)创建时间

pdd_cart_goods - 购物车商品表

字段类型说明
idint(11)主键
cartidint(11)购物车 ID
goodsidint(11)商品 ID
numint(11)数量

注意: 这两张表似乎用于积分兑换商城,与主流程(淘宝客订单)脱节,实际使用情况不明确。


🔟 系统管理表(System Admin)

pdd_admin - 管理员表

后台管理系统的管理员账号。

字段类型说明
idint(11)主键
usernamevarchar(50)用户名
passwordvarchar(50)密码(MD5 加密)

默认账号:

sql
INSERT INTO `pdd_admin` VALUES (1, 'duoduobao', '94b06ab80d1573af035129e2f057db13');

安全建议:

  • 使用更强的密码哈希算法(如 bcrypt、Argon2)
  • 添加账号状态、最后登录时间等字段
  • 支持多管理员角色权限

pdd_sort - 商品分类表

存储拼多多商品类目(用于首页分类展示)。

字段类型说明
idint(11)主键
opt_idvarchar(50)拼多多类目 ID
opt_namevarchar(100)类目名称
parent_idint(11)父类目 ID(支持多级分类)

xx_code / xx_token - 未知表

这两张表前缀为 xx_,与其他表不一致,可能是测试表或临时表。


📈 核心业务流程总结

1. 用户注册与推广链路

新用户扫码/输入邀请码 
  → 注册(pdd_user) 
  → 分配推广位(relation_id) 
  → 生成邀请码(invitation_code) 
  → 建立邀请关系(inviter_user_id)

2. 订单佣金分成流程

用户点击商品 → 拼多多下单 → 订单同步(pdd_order) 
  → 计算佣金(commission) 
  → 订单结算(tk_status=14) 
  → 三级分润(pdd_money):
      ├─ 推广者佣金 (money_type=2, 60%)
      ├─ 上级提成 (money_type=3, 20%)
      ├─ 上上级提成 (money_type=3, 10%)
      └─ 地区代理分成 (money_type=2, 10%)

3. 提现流程

用户申请提现 
  → 创建提现订单(pdd_withdraw, status=0)
  → 扣减余额(pdd_money, money_type=6, count=-金额)
  → 管理员审核 
  → 调用微信企业付款到零钱 API
  → 成功: status=1, trade_id=微信付款单号
  → 失败: status=2, msg=失败原因, 退回余额

4. 晋升机制

用户持续推广 
  → 累计佣金统计(pdd_money, money_type=2)
  → 满足条件(pdd_upgrade规则)
  → 自动晋升:
      ├─ 累计100元 → 合伙人(level_id=2)
      ├─ 累计500元 → 高级总监(level_id=3)
      └─ 申请审核 → 市代理(pdd_apply)
  → 记录晋升(pdd_upgrade_list)
  → 更新用户等级(pdd_user.level_id)

🔍 数据库设计评价

✅ 优点

  1. 业务完整性高:覆盖了用户、订单、收益、提现、代理等完整业务链路
  2. 层级关系清晰:通过外键关联构建了用户邀请树、地区代理树
  3. 资金流水详细pdd_money 表详细记录了所有资金变动,便于对账和审计
  4. 扩展性强:预留了积分系统、物料活动等扩展功能

⚠️ 问题与改进建议

1. 数据冗余

  • 问题pdd_money 表同时存储了用户信息(city_code)和代理信息(town/district/city),造成冗余
  • 建议:通过 user_id 关联 pdd_user 表获取地区信息

2. 索引优化

  • 问题:未见显式创建索引(除主键外)
  • 建议:为高频查询字段添加索引:
    sql
    -- 用户表
    CREATE INDEX idx_invitation_code ON pdd_user(invitation_code);
    CREATE INDEX idx_inviter_user_id ON pdd_user(inviter_user_id);
    CREATE INDEX idx_relation_id ON pdd_user(relation_id);
    
    -- 订单表
    CREATE INDEX idx_trade_id ON pdd_order(trade_id);
    CREATE INDEX idx_user_id_status ON pdd_order(user_id, tk_status);
    
    -- 资金流水表
    CREATE INDEX idx_user_id_type ON pdd_money(user_id, money_type);
    CREATE INDEX idx_order_num ON pdd_money(order_num);
    CREATE INDEX idx_settle_time ON pdd_money(settle_time);

3. 时间字段类型

  • 问题:使用 bigint 存储时间戳,可读性差
  • 建议:改为 datetime 类型,并添加默认值:
    sql
    `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'

4. 安全性

  • 问题:管理员密码使用 MD5 加密(已不安全)
  • 建议:升级为 bcrypt 或 Argon2:
    php
    $password = password_hash($input, PASSWORD_BCRYPT);
    password_verify($input, $hash);

5. 字段命名规范

  • 问题:部分字段命名不一致(如 createtime vs create_time
  • 建议:统一使用下划线命名法

6. 事务一致性

  • 问题:提现流程涉及多表操作,需保证原子性
  • 建议:使用数据库事务:
    sql
    START TRANSACTION;
    -- 创建提现记录
    INSERT INTO pdd_withdraw ...;
    -- 扣减余额
    INSERT INTO pdd_money ...;
    COMMIT;

7. 软删除

  • 问题:缺少软删除机制
  • 建议:添加 deleted_at 字段(Laravel 风格)或 is_deleted 字段

8. 审计日志

  • 问题:关键操作(如审核、转账)缺少操作人记录
  • 建议:添加 operator_idoperator_name 字段

🎯 数据统计

根据 SQL 文件分析:

统计项数值
总表数31
总记录数~230,000+
用户数227
订单数747
提现记录103
拉新记录~229,000
城市代理165 个城市
代理申请31 条

📝 附录:表清单

序号表名中文名记录数
1pdd_user用户表227
2pdd_token登录令牌表-
3pdd_telcode验证码表-
4pdd_goodinvitatercode邀请码池~200
5pdd_order多多客订单表747
6pdd_money资金流水表~1400
7pdd_withdraw提现记录表103
8pdd_city城市代理表165
9pdd_apply代理申请表31
10pdd_storecode店铺码表2
11pdd_upgrade晋升规则表2
12pdd_upgrade_list晋升记录表5
13pdd_banner轮播图表1
14pdd_act活动入口表4
15pdd_bg背景图表5
16pdd_question常见问题表-
17pdd_fl问题分类表6
18pdd_hotword热搜词表-
19pdd_search搜索记录表-
20pdd_pay支付订单表0
21pdd_pay_points积分购买表20
22pdd_points积分流水表6
23pdd_material物料活动表-
24pdd_material_goods物料商品表-
25pdd_material_order物料订单表-
26pdd_batch拉新批次表4
27pdd_pullorder拉新订单表~229,000
28pdd_cart购物车主表7
29pdd_cart_goods购物车商品表11
30pdd_admin管理员表1
31pdd_sort商品分类表-

🔗 相关文档


文档生成时间:2025-10-09
维护人:AI Assistant
版本:v1.0