业务流程
本页把平台、租户、插件、订阅和移动端构建串成可执行流程,适合部署后初始化系统或给运营人员培训使用。
平台初始化
- 完成数据库、Redis、域名、JWT 密钥和支付配置。
- 执行
php think saas:install初始化 SaaS 表结构、菜单、默认配置和演示数据。 - 执行
php think saas:create-platform-admin --default创建平台管理员。 - 登录
admin.example.com,检查平台菜单、系统配置、定时任务和文件上传。 - 配置 SaaS 支付参数、根域名、平台域名、宽限期和通知渠道。
- 创建基础套餐,例如免费版、标准版、专业版。
- 登记或上传内置插件,安装后授权到对应套餐。
创建租户
- 平台后台进入「租户管理」。
- 填写租户 code、租户名称、联系人、初始管理员和套餐。
- 系统根据租户 code 生成访问域名,例如
demo.example.com。 TenantInitService创建租户基础数据、管理员、角色、菜单、默认配置和初始订阅。- 租户管理员登录子域名后台,完善站点配置和业务配置。
- 如果套餐包含自动启用插件,租户首次进入插件中心即可看到已启用应用。
租户 code 会参与域名解析和数据隔离,创建后不要随意修改。确需修改时,需要同步 DNS、缓存、证书和外部回调地址。
套餐与授权
套餐决定租户默认拥有的资源和功能:
- 平台创建功能开关 code,例如
code.generator、wechat.official。 - 平台创建或编辑套餐,设置价格、存储配额、有效期和功能列表。
- 平台在套餐中绑定插件授权,可设置
auto_enable。 - 租户订阅套餐后,系统写入订阅记录并更新租户到期时间。
- 租户访问功能时,后端按套餐校验功能开关,前端按同一 code 控制入口显示。
- 租户访问插件时,系统同时校验插件安装状态、套餐授权、租户启用状态、生命周期和 RBAC。
套餐变更后,建议执行一次授权回填或菜单同步,确保历史租户和插件菜单一致:
bash
cd server
php think saas:backfill-grants
php think saas:menu-sync
php think saas:plugin-menu-reconcile续费与支付
租户续费流程:
- 租户后台进入「续费订阅」。
- 选择套餐、购买月数和支付渠道。
- 系统创建
saas_orders待支付订单,金额使用整数分校验。 - SaaS 支付网关读取平台级支付配置,生成微信或支付宝支付参数。
- 租户扫码或跳转支付。
- 支付回调进入
/api/saas/notify/*,通过签名校验后幂等标记订单已支付。 SubscriptionService延长订阅,并更新租户expires_at。- 前端轮询订单状态,成功后刷新当前套餐和生命周期。
平台可在订单管理中对线下收款执行「标记已支付」,也可取消未支付订单或标记退款。
生命周期流转
租户生命周期由订阅到期时间和平台手动状态共同决定:
text
trial -> active -> grace -> frozen
\-> disabled| 状态 | 触发条件 | 系统行为 |
|---|---|---|
trial | 试用订阅有效 | 正常读写 |
active | 正式订阅有效 | 正常读写 |
grace | 已到期但仍在宽限期 | 允许读,阻断写 |
frozen | 宽限期结束仍未续费 | 只放行登录、订阅和续费白名单 |
disabled | 平台手动禁用 | 全部阻断,需平台恢复 |
生产环境需要用定时任务定期执行:
bash
cd server
php think saas:tenant-lifecycle
php think saas:order-cleanup也可以用统一调度命令:
bash
php think cron:run插件上线
平台安装插件的推荐流程:
- 开发者提供插件 zip,或把内置插件放到
server/plugins/{code}。 - 平台在「插件管理」上传 zip 或登记内置插件。
- 系统校验
plugin.json、路径安全、依赖关系和兼容版本。 - 安装时执行数据库迁移、生命周期钩子、菜单权限同步和前端构建任务。
- 平台在套餐中授权插件。
- 租户在「插件应用」中启用插件。
- 租户角色分配插件菜单和按钮权限。
- 如插件包含移动端页面,租户重新发起移动端构建。
升级插件前应先备份数据库和插件目录。升级失败时,安装流程会尽量执行补偿步骤,但业务迁移仍应保证可重复执行。
移动端构建
租户移动端构建流程:
- 租户进入「移动端配置」,设置应用名称、图标、主题、TabBar、小程序 AppID 等。
- 租户选择目标平台,例如 H5 或微信小程序。
TenantMobileBuildService创建构建任务并检查租户是否具备构建资格。MobileBuildPreparer复制uniapp/主壳到构建工作目录。PluginUniappCopier根据租户权益复制插件 UniApp 源码。PagesJsonGenerator合并基础页面、TabBar 和插件分包页面。TenantConfigWriter注入租户配置。- 构建驱动执行本地、Docker 或远程构建。
- 构建成功后写入产物地址,租户可下载或继续发布。
如果构建产物缺少插件页面,优先检查插件是否安装启用、套餐是否授权、租户是否启用、manifest 是否声明 uniapp.pages,以及源码目录是否存在。
首页装修发布
装修流程适用于 PC 前台和移动端首页:
- 租户在装修页面创建或编辑页面。
- 选择 Banner、导航宫格、公告、富文本、图片广告、视频、插件组件等。
- 配置链接时从链接目录选择系统页面、插件页面或自定义链接。
- 保存为草稿后可预览。
- 发布后前台接口读取当前生效版本。
- 插件组件通过插件声明的 hydrator 补充业务数据。
装修内容发布后不需要重新构建前端;只有移动端原生分包页面或 TabBar 结构变化时才需要重新构建。
日常运维
生产环境至少关注以下任务:
| 任务 | 建议频率 | 命令 |
|---|---|---|
| 租户生命周期扫描 | 每小时 | php think saas:tenant-lifecycle |
| 过期订单清理 | 每 10 分钟到每小时 | php think saas:order-cleanup |
| 队列消费 | 常驻 | php think queue:work --queue default |
| 插件市场同步 | 按需或每日 | php think saas:marketplace-sync |
| 授权评估 | 插件市场同步后 | php think saas:license-evaluate |
| 移动构建清理 | 每日 | php think saas:mobile-build-prune |
更多命令见 运维命令。
