文档目录
分享推广表结构

简介

本设计文档围绕 DouPHP 的“分享推广”能力,聚焦数据层表结构设计,覆盖分享记录、推广链接、分享统计、邀请关系等核心实体,并给出渠道管理、链接生成、点击追踪、转化统计等业务的数据模型建议。文档同时提供表关系图与性能优化策略,便于市场推广人员理解业务指标口径,以及开发者进行扩展与二次开发。

项目结构

当前仓库中与分享推广相关的数据定义主要位于模块存储备份 SQL 中:

  • 分享模块:分享申请/审核记录表
  • 分销模块:分销申请、等级、等级日志、邀请关系表

此外,后台视图页面展示了分享列表入口,用于运营侧查看与管理分享申请。

graph TB
subgraph "分享模块"
S["dou_share<br/>分享申请/审核记录"]
end
subgraph "分销模块"
D["dou_distribution<br/>分销申请/状态"]
L["dou_distribution_level<br/>分销等级配置"]
LL["dou_distribution_level_log<br/>等级变更日志"]
R["dou_distribution_relation<br/>邀请关系"]
end
V["后台分享视图<br/>share.htm"]
U["用户/会员"]
O["订单/支付"]
U --> S
U --> D
D --> L
D --> R
S --> V
R --> O

核心组件

  • 分享申请与审核记录(分享记录表)
    • 用途:记录用户发起的分享申请、处理轨迹与状态流转,支撑分享活动准入与审计。
    • 关键字段:自增ID、分享单号、会员ID、处理记录、处理时间、状态、创建时间。
  • 分销申请与等级(分销申请表、等级表)
    • 用途:管理分销员申请、等级权益(直推/间推奖励比例)、升级条件等。
    • 关键字段:会员ID、姓名、备注、等级ID、处理记录、处理时间、状态、创建时间;等级名称、直推/间推奖励百分比、升级金额阈值、排序、创建时间。
  • 等级变更日志(等级日志表)
    • 用途:记录用户等级升降级原因与触发事件(如订单),便于对账与溯源。
    • 关键字段:用户ID、旧等级ID、新等级ID、条件值、关联订单号、创建时间。
  • 邀请关系(邀请关系表)
    • 用途:维护上下级邀请关系,支撑多级分佣计算与归属判定。
    • 关键字段:用户ID、上级用户ID、层级、创建时间;唯一约束保证一对一父子关系。

架构总览

分享推广在数据层的整体关系如下:

  • 用户通过分享申请进入分享体系(分享记录表)。
  • 用户可申请成为分销员(分销申请表),获得等级(等级表)后参与推广。
  • 分销员邀请新用户形成邀请关系(邀请关系表),后续订单可据此计算奖励。
  • 等级变更由系统根据规则触发,写入等级日志(等级日志表)。
erDiagram
DOU_USER ||--o{ DOU_SHARE : "发起分享申请"
DOU_USER ||--o{ DOU_DISTRIBUTION : "申请分销"
DOU_DISTRIBUTION }o--|| DOU_DISTRIBUTION_LEVEL : "所属等级"
DOU_DISTRIBUTION ||--o{ DOU_DISTRIBUTION_LEVEL_LOG : "等级变更日志"
DOU_USER ||--o{ DOU_DISTRIBUTION_RELATION : "作为被邀请人"
DOU_USER ||--o{ DOU_DISTRIBUTION_RELATION : "作为邀请人"

详细组件分析

分享记录表(dou_share)

  • 字段说明
    • id:主键自增
    • share_sn:分享单号(唯一标识一次分享申请)
    • user_id:会员ID
    • handle_record:处理记录(审批意见、操作留痕)
    • handled_at:处理时间
    • status:状态(-1待审核、0已驳回、1已通过)
    • created_at:创建时间
  • 索引与查询
    • 以id为主键;可按user_id、status、created_at组合查询筛选。
  • 业务含义
    • 用于分享活动报名、审核流程与审计;可与后续推广行为解耦,避免强耦合影响高并发场景。

分销申请表(dou_distribution)

  • 字段说明
    • id:主键自增
    • user_id:会员ID
    • name:申请人姓名
    • remark:申请备注
    • level_id:等级ID(关联等级表)
    • handle_record:处理记录
    • handled_at:处理时间
    • status:状态(如pending/已通过/已拒绝等)
    • created_at:创建时间
  • 索引与查询
    • 已建索引:user_id、status;支持按用户与状态快速检索。
  • 业务含义
    • 管理分销员准入与状态流转;level_id决定奖励比例与升级条件。

分销等级表(dou_distribution_level)

  • 字段说明
    • id:主键自增
    • name:等级名称
    • direct_reward_percent:直推奖励百分比
    • indirect_reward_percent:间推奖励百分比
    • upgrade_condition_amount:升级条件金额阈值
    • sort:排序权重
    • created_at:创建时间
  • 业务含义
    • 定义不同等级的收益与升级门槛,驱动分佣计算与等级晋升。

等级变更日志表(dou_distribution_level_log)

  • 字段说明
    • id:主键自增
    • user_id:用户ID
    • old_level_id:原等级ID
    • new_level_id:新等级ID
    • condition_value:触发升级的条件值(如累计金额)
    • order_sn:关联订单号(可选,用于归因)
    • created_at:创建时间
  • 索引与查询
    • 已建索引:user_id、order_sn;便于按用户或订单追溯等级变化。
  • 业务含义
    • 记录等级变动原因与上下文,支持对账、申诉与数据分析。

邀请关系表(dou_distribution_relation)

  • 字段说明
    • id:主键自增
    • user_id:被邀请用户ID
    • parent_user_id:邀请人用户ID
    • level:层级(1为直接邀请,2为间接邀请等)
    • created_at:创建时间
  • 索引与查询
    • 唯一约束:(user_id, parent_user_id) 防止重复绑定;
    • 索引:parent_user_id 便于统计下线规模。
  • 业务含义
    • 构建邀请树,支撑多级分佣、团队业绩统计与排行榜。

后台分享视图(share.htm)

  • 作用
    • 提供分享申请列表页入口,支持按用户名等条件过滤,便于运营审核与管理。
  • 与数据的关系
    • 列表数据通常来源于分享记录表(dou_share),结合状态与时间维度进行展示。

依赖关系分析

  • 表间依赖
    • dou_distribution.level_id → dou_distribution_level.id
    • dou_distribution.user_id → 用户表(外部)
    • dou_distribution_relation.user_id / parent_user_id → 用户表(外部)
    • dou_distribution_level_log.order_sn → 订单表(外部,用于归因)
  • 运行期依赖
    • 分销等级变更可能由订单结算触发,需与订单/资金模块协作。
    • 分享申请审核通过后,方可授予推广权限或发放推广码。
graph LR
A["dou_distribution"] --> B["dou_distribution_level"]
C["dou_distribution_relation"] --> |user_id| U["用户表"]
C --> |parent_user_id| U
D["dou_distribution_level_log"] --> |order_sn| E["订单表"]

性能考虑

  • 索引策略
    • 已有索引:distribution.user_id、distribution.status、relation.parent_user_id、level_log.user_id、level_log.order_sn。
    • 建议补充:share.user_id、share.status、share.created_at 的复合索引,提升列表与统计查询效率。
  • 读写分离与归档
    • 分享申请与等级日志属于写多读少,建议定期归档历史数据至冷存储,保持热表轻量。
  • 事务与一致性
    • 邀请关系建立与等级变更应置于事务中,确保原子性;失败时回滚并记录错误日志。
  • 缓存与预聚合
    • 排行榜、团队规模等高频读取指标可采用缓存或定时物化视图/汇总表,降低实时聚合压力。
  • 扩容与分区
    • 当数据量增长到千万级,可对日志类表按时间分区;对关系表可按用户ID哈希分片。

故障排查指南

  • 常见问题定位
    • 邀请关系重复:检查唯一约束 (user_id, parent_user_id),确认是否存在并发插入未加锁。
    • 等级变更异常:核对 level_log 的 old/new level 与触发条件(如订单金额)是否一致。
    • 分享申请卡住:检查 status 与 handled_at 是否为空,确认审核流程是否完成。
  • 诊断方法
    • 通过 user_id、order_sn、status 等索引字段快速定位记录。
    • 结合后台分享列表页(share.htm)进行人工核验。
  • 修复建议
    • 对并发场景增加行级锁或分布式锁;对幂等接口增加去重键。
    • 对长事务拆分,减少锁持有时间。

结论

当前数据层已具备分享申请与分销体系的基础表结构,涵盖申请、等级、日志与邀请关系等关键要素。为满足更完整的“分享推广”闭环,建议在现有基础上补充分享渠道、推广链接、点击追踪与转化统计等表结构,并结合索引、缓存与归档策略保障性能与可维护性。

附录

推荐新增表结构(概念设计)

以下为面向市场推广与开发的参考设计,便于实现“渠道管理、链接生成、点击追踪、转化统计”等能力。该部分为概念设计,非仓库现有代码。

  • 分享渠道表(share_channel)
    • 字段:id、渠道编码、渠道名称、类型(社交/短信/邮件/其他)、参数模板、启用状态、创建时间
    • 用途:统一管理分享渠道及其投放参数
  • 推广链接表(share_link)
    • 字段:id、share_sn、channel_id、user_id、目标URL、短链、二维码、有效期、点击次数、转化次数、创建时间
    • 用途:记录每次分享的推广链接及基础计数
  • 点击追踪表(share_click)
    • 字段:id、link_id、user_agent、ip、referer、设备信息、地理位置、访问IP、访问时间
    • 用途:精细化追踪访客来源与设备环境
  • 转化统计表(share_conversion)
    • 字段:id、link_id、user_id、event_type(注册/下单/付费)、target_id(如订单号)、金额、佣金、状态、创建时间
    • 用途:将推广行为与业务转化关联,支撑ROI与分佣计算
  • 分享效果报表(share_report_daily)
    • 字段:date、channel_id、user_id、clicks、registrations、orders、amount、commission、conversion_rate
    • 用途:按日聚合渠道与个人维度的推广效果,供运营看板使用
erDiagram
SHARE_CHANNEL ||--o{ SHARE_LINK : "生成推广链接"
SHARE_LINK ||--o{ SHARE_CLICK : "记录点击"
SHARE_LINK ||--o{ SHARE_CONVERSION : "记录转化"
SHARE_CONVERSION }o--|| ORDER : "关联订单"
SHARE_REPORT_DAILY }o--|| SHARE_CHANNEL : "按渠道汇总"
SHARE_REPORT_DAILY }o--|| SHARE_LINK : "按链接汇总"

[此图为概念设计,不对应仓库现有代码文件]

业务流程示意(概念)

sequenceDiagram
participant U as "用户"
participant F as "前端"
participant S as "分享服务"
participant DB as "数据库"
participant O as "订单服务"
U->>F : 打开分享落地页
F->>S : 请求生成推广链接
S->>DB : 写入分享渠道/链接
S-->>F : 返回短链/二维码
U->>F : 点击推广链接
F->>S : 记录点击
S->>DB : 写入点击追踪
U->>O : 完成下单/注册
O->>S : 回调转化事件
S->>DB : 写入转化记录并更新统计

[此图为概念流程,不对应仓库现有代码文件]

添加日期:2026-10-05