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.generatorwechat.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 协议开源