目录
一、详细介绍
1. 项目简介
2. 主要功能
3. 环境要求
二、效果展示
1. 部分代码
2. 效果图展示
三、学习资料下载
一、详细介绍
1. 项目简介
这是一套全开源的短视频素材分发管理系统,专为短视频创作者、MCN机构和素材平台运营者设计。系统实现了素材上传、用户领取、作品回填审核和佣金结算的完整业务闭环,适合搭建自有短视频素材分发平台或企业内部分发协作工具。
2. 主要功能
- 用户管理:支持用户注册、登录、账号审核机制,区分普通用户与管理员权限
- 素材管理:支持视频素材上传、网盘模式分发、素材封面上传与管理
- 领取系统:支持素材一键领取、每日领取次数限制、多渠道链接分发
- 回填审核:作品回填提交、截图上传验证、管理员审核管理
- 收益系统:佣金自动计算、用户余额管理、提现申请与审核
- 通知系统:邮件通知、站内管理员消息提醒
- 系统设置:灵活配置各项业务参数,包括每日领取上限、佣金比例等
3. 环境要求
| PHP | 7.4+(推荐 8.0+) |
| MySQL | 5.7+(推荐 8.0+) |
| Web 服务器 | Nginx / Apache |
| PHP 扩展 | mysqli、json、gd、curl、OpenSSL、fileinfo |
| 其他 | 建议开启伪静态(URL Rewrite) |
二、效果展示
1. 部分代码
以下是素材分发系统的核心业务控制器代码,实现了素材领取、每日限制校验和作品回填审核的核心逻辑:
session_start();
$action = $_GET['action'] ?? '';
if (is_post()) check_csrf();
if (empty($_SESSION['user_id'])) json_response(['error'=>'未登录'],401);
$uid = $_SESSION['user_id'];
if ($action === 'submit') {
$mid = safe_int($_POST['material_id'] ?? 0);
$type = $_POST['type'] ?? 'first';
if (!in_array($type, ['first','additional'])) json_response(['error'=>'回填类型错误']);
$work_link = raw_trim($_POST['work_link'] ?? '');
if ($mid <= 0) json_response(['error'=>'素材参数错误']);
if ($type === 'first' && !is_safe_http_url($work_link)) json_response(['error'=>'作品链接必须为 http/https 地址']);
if ($type === 'first' && $work_link === '') json_response(['error'=>'首次回填必须填写作品链接']);
$stmt = $mysqli->prepare('SELECT id FROM user_material WHERE user_id=? AND material_id=?');
$stmt->bind_param('ii',$uid,$mid); $stmt->execute(); $stmt->store_result();
if (!$stmt->num_rows) json_response(['error'=>'请先领取该素材']);
if ($type === 'first') {
$stmt = $mysqli->prepare("SELECT id FROM material_backfills WHERE user_id=? AND material_id=? AND type='first' AND status IN ('pending','approved') LIMIT 1");
$stmt->bind_param('ii',$uid,$mid); $stmt->execute(); $stmt->store_result();
if ($stmt->num_rows) json_response(['error'=>'首次回填已提交或已通过']);
}
$upload = secure_file_upload_to('screenshot', 'backfills', ['jpg','jpeg','png'], ['image/jpeg','image/png'], 5242880);
if (!$upload['ok']) json_response(['error'=>$upload['error']]);
// 获取用户和素材信息用于通知
$stmt=$mysqli->prepare('SELECT username FROM users WHERE id=?'); $stmt->bind_param('i',$uid); $stmt->execute(); $user=$stmt->get_result()->fetch_assoc();
$stmt=$mysqli->prepare('SELECT title FROM materials WHERE id=?'); $stmt->bind_param('i',$
2. 效果图展示




