Skip to content

功能总览

元点Saas 不是单一后台模板,而是一套包含平台运营、租户后台、公共前台、移动端主壳和插件应用体系的多端 SaaS 框架。系统能力按使用对象分为平台侧、租户侧、前台用户侧、插件侧和运维侧。

系统入口

入口代码目录API 应用典型域名使用对象
平台后台platform/platformapiadmin.example.comSaaS 平台运营者
租户后台tenant/tenantapi{tenant}.example.com租户管理员
PC 前台pc/apiexample.comC 端用户 / 访客
移动端uniapp/apiH5 / 小程序 / AppC 端用户
插件应用server/plugins/{code}插件路由随平台或租户挂载行业应用开发者

平台侧能力

平台后台负责 SaaS 运营和全局资源管理。

模块主要能力相关代码
仪表盘租户数、订单、收入、趋势统计DashboardController / DashboardService
租户管理创建租户、分配套餐、启停租户、查看生命周期TenantController / TenantService
套餐管理价格、时长、存储配额、功能开关、插件授权PlanController / PlanService
插件管理上传、登记、安装、升级、卸载、清理PluginController / PluginService
插件市场OAuth 连接、目录同步、安装意图、升级和授权校验platformapi/controller/v1/marketplace
订单退款SaaS 订阅订单、线下确认、取消、退款SaasOrderService / RefundController
移动构建查看租户移动端构建任务与产物MobileBuildController
平台系统平台管理员、角色、菜单、字典、文件、定时任务、API 文档platformapi/controller/v1/system

平台侧请求使用 platform_contextplatform_auth,与租户侧 JWT 密钥隔离。

租户侧能力

租户后台继承通用后台能力,并增加 SaaS 自服务能力。

模块主要能力权益关系
主页业务统计、快捷入口、平台公告基础能力
系统管理管理员、角色、部门、菜单、字典、配置、日志RBAC 控制
用户管理前台用户、积分、资料管理基础能力
内容与反馈公告、协议、反馈、CMS 插件内容可由插件增强
装修首页、页面、组件、链接目录、插件组件渲染受插件和移动配置影响
渠道管理微信公众号、自动回复、小程序配置受套餐功能控制
文件管理上传、分组、存储驱动受套餐存储配额控制
插件应用查看、启用、禁用、配置已授权插件受套餐授权和单独购买控制
续费订阅当前套餐、到期时间、续费支付、订单记录生命周期核心流程
移动端配置名称、图标、TabBar、构建目标和构建记录受移动端构建能力控制
代码生成器表结构生成后端和前端 CRUD需要 code.generator 功能

租户侧请求会经过租户解析、租户认证、生命周期状态、插件权益、RBAC 和操作日志等中间件。

多租户隔离

系统采用物理入口隔离和代码级租户上下文双重防线:

  • admin.example.com 只进入平台后台和 platformapi
  • {tenant}.example.com 进入租户后台和 tenantapi,子域名会解析成租户 code。
  • TenantContext 在请求进入时写入租户 ID、租户 code、套餐和生命周期信息。
  • 继承 core\base\Repository 的租户级查询使用 $this->query() 自动追加 tenant_id 过滤。
  • 平台 token 和租户 token 使用不同 JWT secret,跨 scope token 会被拒绝。
  • Redis、日志、文件配额和插件权益都按租户边界处理。

SaaS 商业闭环

环节说明
套餐定义价格、有效期、存储上限、功能开关和插件授权
订阅记录租户当前有效权益,支持试用、正式订阅、续费和升级
订单创建支付单,处理微信/支付宝支付、取消、退款和线下确认
生命周期根据订阅到期自动流转 trialactivegracefrozendisabled
功能开关后端 TenantFeatureService 和前端 v-feature 同语义控制功能入口
配额上传前校验存储上限,成功后原子累加,删除后防下溢释放

插件应用体系

插件是系统的业务扩展单元,统一放在 server/plugins/{code}

插件形态适用场景租户侧表现
kind=app商城、CMS、CRM、工单等完整业务作为一级应用进入菜单
kind=plugin积分兑换、营销组件、支付扩展、装修组件进入插件中心或被其他模块调用

插件可以同时提供:

  • 后端 API、Service、Repository、迁移和生命周期钩子。
  • 租户后台页面、API 封装和菜单权限。
  • UniApp 分包页面、装修组件和移动端入口。
  • manifest 中声明的插件依赖、授权 code、分类、兼容版本和移动端页面。

当前仓库内置 mallcms 示例插件,可作为插件结构参考。

移动端与装修

移动端采用主壳加插件分包的模式:

  1. uniapp/ 提供基础应用壳、用户中心、首页渲染和通用能力。
  2. 租户在后台配置应用名称、图标、小程序信息、TabBar 和首页装修。
  3. 构建时系统根据租户权益筛选插件,只复制已授权插件的 UniApp 源码。
  4. PagesJsonGenerator 合并基础页面和插件页面,生成租户专属 pages.json
  5. 构建驱动支持本地、Docker 和远程构建。

装修系统负责 PC 与移动端页面的可视化配置,插件可以注册自己的装修组件和链接入口。

安全与质量边界

系统把以下能力作为不可破坏的红线:

  • 租户 A 不能通过列表或 ID 注入读取租户 B 数据。
  • 平台上下文不能意外泄露租户数据。
  • 平台和租户 token 不能互相使用。
  • grace 状态只读,frozen 状态仅放行续费白名单。
  • 存储配额必须硬拦截,释放不能下溢。
  • 未开通功能或插件权益时必须拒绝访问。
  • 插件包不能包含路径穿越、危险文件或不兼容 manifest。

开发或升级系统后,应至少运行后端测试和前端类型检查,详情见 开发检查清单

基于 Apache-2.0 协议开源