Skip to content

业务流程 ​

本页把平台、租户、插件、订阅和移动端构建串成可执行流程,适合部署后初始化系统或给运营人员培训使用。

平台初始化 ​

  1. 完成数据库、Redis、域名、JWT 密钥和支付配置。
  2. 执行 php think saas:install 初始化 SaaS 表结构、菜单、默认配置和演示数据。
  3. 执行 php think saas:create-platform-admin --default 创建平台管理员。
  4. 登录 admin.example.com,检查平台菜单、系统配置、定时任务和文件上传。
  5. 配置 SaaS 支付参数、根域名、平台域名、宽限期和通知渠道。
  6. 创建基础套餐,例如免费版、标准版、专业版。
  7. 登记或上传内置插件,安装后授权到对应套餐。

创建租户 ​

  1. 平台后台进入「租户管理」。
  2. 填写租户 code、租户名称、联系人、初始管理员和套餐。
  3. 系统根据租户 code 生成访问域名,例如 demo.example.com。
  4. TenantInitService 创建租户基础数据、管理员、角色、菜单、默认配置和初始订阅。
  5. 租户管理员登录子域名后台,完善站点配置和业务配置。
  6. 如果套餐包含自动启用插件,租户首次进入插件中心即可看到已启用应用。

租户 code 会参与域名解析和数据隔离,创建后不要随意修改。确需修改时,需要同步 DNS、缓存、证书和外部回调地址。

套餐与授权 ​

套餐决定租户默认拥有的资源和功能:

  1. 平台创建功能开关 code,例如 code.generator、wechat.official。
  2. 平台创建或编辑套餐,设置价格、存储配额、有效期和功能列表。
  3. 平台在套餐中绑定插件授权,可设置 auto_enable。
  4. 租户订阅套餐后,系统写入订阅记录并更新租户到期时间。
  5. 租户访问功能时,后端按套餐校验功能开关,前端按同一 code 控制入口显示。
  6. 租户访问插件时,系统同时校验插件安装状态、套餐授权、租户启用状态、生命周期和 RBAC。

套餐变更后,建议执行一次授权回填或菜单同步,确保历史租户和插件菜单一致:

bash
cd server
php think saas:backfill-grants
php think saas:menu-sync
php think saas:plugin-menu-reconcile

续费与支付 ​

租户续费流程:

  1. 租户后台进入「续费订阅」。
  2. 选择套餐、购买月数和支付渠道。
  3. 系统创建 saas_orders 待支付订单,金额使用整数分校验。
  4. SaaS 支付网关读取平台级支付配置,生成微信或支付宝支付参数。
  5. 租户扫码或跳转支付。
  6. 支付回调进入 /api/saas/notify/*,通过签名校验后幂等标记订单已支付。
  7. SubscriptionService 延长订阅,并更新租户 expires_at。
  8. 前端轮询订单状态,成功后刷新当前套餐和生命周期。

平台可在订单管理中对线下收款执行「标记已支付」,也可取消未支付订单或标记退款。

生命周期流转 ​

租户生命周期由订阅到期时间和平台手动状态共同决定:

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

插件上线 ​

平台安装插件的推荐流程:

  1. 开发者提供插件 zip,或把内置插件放到 server/plugins/{code}。
  2. 平台在「插件管理」上传 zip 或登记内置插件。
  3. 系统校验 plugin.json、路径安全、依赖关系和兼容版本。
  4. 安装时执行数据库迁移、生命周期钩子、菜单权限同步和前端构建任务。
  5. 平台在套餐中授权插件。
  6. 租户在「插件应用」中启用插件。
  7. 租户角色分配插件菜单和按钮权限。
  8. 如插件包含移动端页面,租户重新发起移动端构建。

升级插件前应先备份数据库和插件目录。升级失败时,安装流程会尽量执行补偿步骤,但业务迁移仍应保证可重复执行。

移动端构建 ​

租户移动端构建流程:

  1. 租户进入「移动端配置」,设置应用名称、图标、主题、TabBar、小程序 AppID 等。
  2. 租户选择目标平台,例如 H5 或微信小程序。
  3. TenantMobileBuildService 创建构建任务并检查租户是否具备构建资格。
  4. MobileBuildPreparer 复制 uniapp/ 主壳到构建工作目录。
  5. PluginUniappCopier 根据租户权益复制插件 UniApp 源码。
  6. PagesJsonGenerator 合并基础页面、TabBar 和插件分包页面。
  7. TenantConfigWriter 注入租户配置。
  8. 构建驱动执行本地、Docker 或远程构建。
  9. 构建成功后写入产物地址,租户可下载或继续发布。

如果构建产物缺少插件页面,优先检查插件是否安装启用、套餐是否授权、租户是否启用、manifest 是否声明 uniapp.pages,以及源码目录是否存在。

首页装修发布 ​

装修流程适用于 PC 前台和移动端首页:

  1. 租户在装修页面创建或编辑页面。
  2. 选择 Banner、导航宫格、公告、富文本、图片广告、视频、插件组件等。
  3. 配置链接时从链接目录选择系统页面、插件页面或自定义链接。
  4. 保存为草稿后可预览。
  5. 发布后前台接口读取当前生效版本。
  6. 插件组件通过插件声明的 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

更多命令见 运维命令。

基于 Apache-2.0 协议开源