短剧SAAS系统源码拆包:多租户与分销业务闭环部署实战

发布时间:2026/10/28 20:52:17
短剧SAAS系统源码拆包:多租户与分销业务闭环部署实战

简介:这是一套面向短剧创业者、影视小程序开发者与中小型内容平台的2024最新版视频短剧SAAS系统源码,采用SAAS多租户架构,可快速搭建属于自己的短剧分发与变现平台,解决从内容上架、会员运营到分销裂变的全链路需求。系统目前支持微信小程序与公众号H5双端运行,内置分销商等级自定义价格配置、二级分销、VIP会员体系,以及VIP卡密、积分卡密、经销商卡密三类卡密兑换能力,并支持多云存储平台自由切换、批量导入与接口采集,便于内容规模化运营。资源包共494个文件,以251个js与138个vue为核心业务代码,辅以scss样式、png与jpg素材、json配置及nvue、wxs等小程序文件,另附搭建教程文档与sql脚本,整体约4.3MB,结构完整便于二次开发。目前已有2035人学习下载,适合希望低成本切入短剧赛道、需要成熟SAAS底座快速上线运营的开发者参考。

1. 短剧 SAAS 系统源码拆包:一套能跑起来的完整业务闭环长什么样

去年帮一个做小程序外包的朋友看项目,他接了个短剧分销的活,客户张口就要“抖音那种划一下一集、看完能充值、还能拉人头分佣”的系统。他第一反应是找现成源码改,结果市面上大部分所谓“短剧 SAAS”要么只有前端壳子,要么后端接口对不上,跑起来连一集都播不完。这次拆的这套 2024 最新版视频短剧 SAAS 系统源码,算是把内容管理、用户端播放、付费解锁、分销裂变、多租户 SAAS 后台这几块都串起来了,不是那种只给几个页面的半成品。它适合两类人:一是想快速搭一套短剧小程序验证商业模式的创业者,二是接私活需要一套能改能扩的底座的开发者。下面按我实际部署和调试的顺序,把这份资源从结构到跑通再到踩坑讲清楚。

2. 源码目录结构与技术栈:先搞清楚哪块是租户端、哪块是平台端

拿到一个 .rar 压缩包,别急着解压完就找 index.php。短剧 SAAS 和普通单商户短剧系统最大的区别在于“多租户”——平台方一套后台管所有入驻的短剧方,每个短剧方又有自己的小程序端和独立配置。目录结构如果分不清,后面改代码会改到怀疑人生。

2.1 解压后的顶层目录与职责划分

我拿到的包解压后大致是这么几块(不同版本命名可能有差异,但职责基本一致):

目录/文件职责是否可独立部署
admin/或platform/平台总后台,管理租户、套餐、全局配置是,通常绑定主域名
merchant/或tenant/租户后台,每个短剧方管理自己的剧集、订单、分销是,可子域名或路径区分
api/后端接口层,用户端小程序调用的统一入口是,常独立域名
miniprogram/微信小程序前端源码需开发者工具导入
h5/或web/H5 播放端,用于分享落地页是
static//uploads/静态资源与用户上传的封面、视频随主站
sql/数据库初始化脚本一次性导入
config/数据库、缓存、支付等配置随环境改

这里有个容易翻车的点:很多包把admin和merchant混在一个入口,靠登录角色区分。这套是分开的,部署时如果只配了一个域名,租户后台可能访问不到。常见做法是平台端用主域名,租户端用泛解析子域名,比如*.yourdomain.com,Nginx 里做通配。

2.2 技术栈判断与运行环境要求

从代码特征看,后端大概率是 PHP(ThinkPHP 或 Laravel 风格)或 Node.js(Express/Koa),前端小程序是原生或 uni-app 编译。判断方法很简单:看composer.json或package.json是否存在,看入口文件index.php还是app.js。

我这次拿到的包是 PHP 系,环境要求大致如下:

  • PHP 7.4 ~ 8.1(8.2 以上部分函数可能报弃用警告)
  • MySQL 5.7 / 8.0
  • Redis 用于缓存和队列(短剧播放进度、分销佣金结算常走队列)
  • Nginx 或 Apache,需支持伪静态
  • 小程序端需要微信开发者工具,且要配置合法域名

提示:如果包里有composer.json,先跑composer install再改配置,别直接改 vendor 里的文件,否则后续更新全乱。

2.3 数据库初始化与配置文件的对应关系

数据库脚本一般在sql/下,文件名可能叫install.sql或shortplay.sql。导入前先建库,字符集用utf8mb4,否则短剧标题里的 emoji 或特殊符号会乱码。

导入命令示例:

# 登录 MySQL 后创建数据库 CREATE DATABASE shortplay_saas DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 退出 MySQL,用命令行导入(注意路径替换) mysql -u root -p shortplay_saas < /path/to/sql/install.sql

导入后检查核心表是否存在:tenant(租户表)、drama(剧集表)、episode(分集表)、order(订单表)、distribution(分销关系表)。如果缺表,说明 SQL 脚本不完整或版本不匹配,后面接口必报错。

配置文件通常有两处:config/database.php和.env(如果有)。改数据库连接、Redis 连接、微信 AppID/Secret、支付商户号。这里别只改一处,很多包两处都读,改漏了会出现“后台能登录但小程序接口 500”的玄学问题。

3. 后端部署与接口联调:让小程序能拉到第一集数据

源码能不能跑,不看后台多漂亮,看小程序端能不能正常请求到剧集列表和播放地址。这一步过了,后面付费和分销才有意义。

3.1 配置伪静态与跨域

Nginx 伪静态规则一般包里有.htaccess或nginx.conf示例。ThinkPHP 风格的规则大致是:

location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } }

跨域问题在短剧小程序里特别常见,因为 H5 分享页和 API 可能不同域。后端入口文件或中间件里要加:

// 常见做法是在入口或中间件设置 header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With'); header('Access-Control-Allow-Methods: GET, POST, OPTIONS'); if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { exit; }

逻辑说明:小程序请求前会发 OPTIONS 预检,如果后端没返回 200,正式请求根本发不出去。参数上*在生产环境建议换成具体域名,避免安全风险。

3.2 微信小程序端配置与合法域名

用微信开发者工具导入miniprogram/目录,改app.js或config.js里的baseUrl为你的 API 域名。然后在微信公众平台配置 request 合法域名和 downloadFile 合法域名(视频播放地址如果走 CDN,也要加进去)。

常见做法是本地调试时勾选“不校验合法域名”,但上线前必须配好,否则真机一片空白。

3.3 剧集数据与播放地址的生成逻辑

短剧播放一般不是直接存 MP4 链接,而是存相对路径或视频 ID,由后端拼接 CDN 地址或生成带鉴权的临时链接。看api/controller/Episode.php或类似文件,找到play或detail方法。

关键参数通常有:

  • episode_id:分集 ID
  • user_id:用户标识,用于记录观看进度和付费状态
  • tenant_id:租户标识,SAAS 下必须带,否则串数据

如果播放地址返回 403,先查 CDN 鉴权时间戳是否过期,再查视频文件是否真的上传到了uploads/对应目录。

3.4 付费解锁与订单回调的联调

短剧的核心变现是付费解锁。流程一般是:用户点解锁 → 后端创建订单 → 调微信支付 → 微信回调 → 后端更新订单状态并解锁剧集。

回调地址必须在微信支付商户平台配置,且要能公网访问。本地调试可以用内网穿透工具(这里不展开),但上线必须用真实域名。

订单表关键字段:order_no、user_id、episode_id、amount、status、pay_time。回调里要验签,别直接信任前端传来的“支付成功”。

4. 多租户 SAAS 与分销逻辑:这套源码真正值钱的地方

单商户短剧系统满地都是,SAAS 的价值在于“一套代码卖多个租户”。分销则是让用户帮你拉新。这两块逻辑如果没跑通,这套源码的含金量就少了一半。

4.1 租户隔离的三种实现方式与选型

常见做法有三种:

  1. 独立数据库:每个租户一个库,隔离最彻底,但运维成本高。
  2. 共享库 + tenant_id 字段:所有表带tenant_id,查询时强制带上。这套源码大概率是这种,改造成本低。
  3. 共享库 + 独立 schema:PostgreSQL 常用,MySQL 较少。

判断方法:看drama表有没有tenant_id字段。如果有,就是第二种。这种模式下,所有接口必须从登录态或域名解析出tenant_id,不能信前端传的。

4.2 分销关系绑定与佣金结算

分销表一般叫distribution或user_relation,字段包括user_id、parent_id、level、commission_rate。绑定时机通常是用户第一次点击分享链接进入时,后端记录上级。

佣金结算走队列比较稳:

// 伪代码示意,实际看源码队列驱动 Queue::push('CommissionJob', [ 'order_id' => $orderId, 'user_id' => $userId, 'amount' => $amount, ]);

逻辑说明:支付回调里不要直接算佣金,因为可能涉及多级分佣和并发,放队列里异步处理,失败可重试。参数上commission_rate建议从租户配置里读,别写死。

4.3 租户后台的套餐与权限控制

平台端给租户开账号时,会分配套餐(比如能建多少剧、多少用户)。这部分逻辑在platform/controller/Tenant.php里。注意看有没有“试用期”和“到期锁定”逻辑,很多包这里写得潦草,租户到期后还能继续用。

4.4 短剧上下架与推荐位配置

租户后台里,剧集有“上架/下架”状态,首页推荐位一般存recommend表或config字段。改推荐位排序时,注意缓存,很多包用了 Redis 缓存首页数据,改完不生效先清缓存。

5. 避坑与常见问题:部署时最容易翻车的五个点

这一章是我实际调试中遇到的真实问题,按“现象 → 原因 → 解决”写,你遇到时可以直接对照。

5.1 小程序请求全部 500,但后台能登录

现象:后台正常,小程序端所有接口返回 500。原因:API 入口的伪静态没配,或者baseUrl指向了后台域名而不是 API 域名。解决:检查 Nginx 是否对 API 目录单独配了 rewrite,确认小程序config.js里的域名是 API 域名且带https。

5.2 视频能播放但无法付费解锁

现象:点解锁没反应,或提示“支付失败”。原因:微信支付商户号没配、回调地址没配、或者订单表缺少tenant_id导致创建订单失败。解决:逐项检查支付配置,看order表结构,确保创建订单时tenant_id有值。

5.3 分销佣金不结算

现象:用户充值了,但上级没收到佣金。原因:队列没启动,或者CommissionJob里读不到分销关系。解决:检查 Redis 队列进程是否运行,手动跑一次队列命令看报错。再查distribution表里关系是否绑定成功。

5.4 租户之间数据串了

现象:A 租户后台看到了 B 租户的剧集。原因:查询没带tenant_id条件,或者tenant_id从 session 里取错了。解决:全局搜索drama表的查询,确保每个where都有tenant_id。SAAS 系统这是红线,必须逐条查。

5.5 上传视频后播放 404

现象:后台上传成功,但前端播放 404。原因:uploads/目录没写权限,或者视频存储路径和读取路径不一致。解决:给uploads/777 权限(临时),检查config里的存储路径配置,确认 CDN 回源地址正确。

6. 二次开发与验证:怎么确认这套源码值得改

拿到源码只是开始,能不能改成你要的样子才是关键。我一般会做三件事来验证一套短剧 SAAS 的底子。

6.1 用一条 SQL 验证租户隔离是否彻底

-- 查所有没有 tenant_id 条件的剧集查询(需结合代码看) SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'shortplay_saas' AND column_name = 'tenant_id';

如果核心业务表(drama、episode、order)都有tenant_id,说明隔离基础在。然后去代码里搜drama的查询,看有没有漏加条件的。这一步能筛掉一半“伪 SAAS”源码。

6.2 改一个推荐位排序,看缓存和生效链路

在租户后台改首页推荐剧集顺序,保存后刷新小程序首页。如果没变,去 Redis 里找对应 key 删掉再看。如果删了还没变,说明有静态缓存或 CDN 缓存。这个测试能帮你摸清整套系统的缓存层级,后面改任何功能都用得上。

6.3 模拟一次完整分销链路

注册用户 A → A 分享给 B → B 充值 → 查 A 的佣金。这条链路走通,说明分销模块可用。走不通,按第 5 章的排查点逐个查。我习惯用 Postman 直接调接口,绕过前端,更快定位是前端还是后端问题。

6.4 二次开发时优先改哪些文件

  • 改 UI:miniprogram/下的 wxml/wxss
  • 改业务逻辑:api/controller/下对应控制器
  • 改租户配置:merchant/下的设置页
  • 加新支付方式:api/service/Pay.php或类似文件

别一上来就重构,先跑通再改。这套源码的价值在于业务闭环完整,不是代码多优雅。能跑、能改、能上线,就是好底子。

从那以后我每次拿到这类 SAAS 源码,都强制先走一遍“租户隔离验证 + 分销链路模拟”,这两步过了再谈二开。希望帮到你。

本文还有配套的精品资源,点击获取