一、为什么选择PHP知识付费源码自带二级分销和录播模块
知识付费行业竞争激烈,单纯卖课已不够。二级分销能通过老用户裂变拉新,录播播放模块则保证课程交付体验。一套PHP源码同时具备这两个功能,可以省去二次开发成本,快速上线。
典型场景:用户A购买课程后生成专属海报,用户B通过海报下单,A获得一级佣金,B再邀请C下单,A获得二级佣金。同时,所有课程以录播视频形式存储在平台,支持加密播放、防下载。
二、系统架构设计要点
采用ThinkPHP 6 + MySQL + Redis + 阿里云OSS/VOD的架构。核心模块划分:
- 用户中心:注册、登录、分销关系绑定
- 课程管理:录播视频上传、转码、播放鉴权
- 分销中心:佣金规则、提现、关系链
- 订单支付:微信/支付宝支付回调
分销关系使用闭包表或路径枚举存储,推荐user_id, parent_id, level三字段,level=1为一级,level=2为二级。
三、数据库关键表设计
-- 用户表
CREATE TABLE `user` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`nickname` varchar(50),
`invite_code` varchar(20) UNIQUE,
`parent_id` int DEFAULT 0,
`grand_id` int DEFAULT 0,
`created_at` int
);
-- 分销佣金表
CREATE TABLE `commission` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`user_id` int,
`order_id` int,
`level` tinyint,
`amount` decimal(10,2),
`status` tinyint DEFAULT 0
);
-- 课程表
CREATE TABLE `course` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(100),
`video_url` varchar(255),
`price` decimal(10,2),
`is_free` tinyint DEFAULT 0
);四、二级分销核心逻辑实现
用户下单支付成功后,触发分销佣金计算。
// 支付回调中调用
public function distributeCommission($orderId, $buyerId, $orderAmount)
{
$buyer = User::find($buyerId);
$level1 = $buyer->parent_id;
$level2 = $buyer->grand_id;
$rate1 = 0.1; // 一级佣金比例10%
$rate2 = 0.05; // 二级佣金比例5%
if ($level1) {
Commission::create([
'user_id' => $level1,
'order_id' => $orderId,
'level' => 1,
'amount' => $orderAmount * $rate1
]);
}
if ($level2) {
Commission::create([
'user_id' => $level2,
'order_id' => $orderId,
'level' => 2,
'amount' => $orderAmount * $rate2
]);
}
}绑定关系时,注册环节通过邀请码写入parent_id和grand_id:
$inviter = User::where('invite_code', $inviteCode)->first();
$newUser->parent_id = $inviter->id;
$newUser->grand_id = $inviter->parent_id ?: 0;
$newUser->save();五、课程录播播放模块实现
录播视频建议上传至阿里云VOD或腾讯云点播,获取videoId后通过播放器SDK播放。关键点:
- 防盗链:使用带时效的签名URL,有效期60秒。
- 播放鉴权:用户必须购买课程或为免费课程才返回播放凭证。
- 进度记录:前端定时上报
currentTime,后端存储到user_course_progress表。
// 获取播放凭证
public function getPlayAuth($courseId)
{
$user = auth()->user();
$course = Course::find($courseId);
if (!$course->is_free && !Order::where('user_id', $user->id)->where('course_id', $courseId)->where('status', 1)->exists()) {
return json(['code' => 403, 'msg' => '请先购买课程']);
}
$vodClient = new VodClient();
$playAuth = $vodClient->getPlayAuth($course->video_id);
return json(['code' => 0, 'data' => $playAuth]);
}前端使用<video>标签或阿里云播放器,通过playAuth初始化。
六、部署与优化建议
- 使用Nginx + PHP-FPM,开启OPcache。
- 分销佣金结算使用队列异步处理,避免支付回调超时。
- 录播视频开启HLS加密,防止直接下载。
- 定期清理未支付订单,释放库存。
七、常见问题
Q:二级分销是否合规?
A:仅限两级,且佣金基于真实商品交易,不涉及入门费,符合《禁止传销条例》。
Q:录播播放卡顿怎么办?
A:使用CDN加速,并设置多码率自适应。
Q:源码是否支持二次开发?
A:选择模块化清晰的源码,如基于ThinkPHP或Laravel的,便于扩展。
按照以上方案,你可以快速搭建一个带二级分销和录播播放的PHP知识付费平台。建议先在小规模测试分销逻辑与播放稳定性,再正式推广。


