目录结构
项目根目录
ydadmin-saas/
├── platform/ # 平台超管后台(Vue 3 + Element Plus)
├── tenant/ # 租户后台(Vue 3 + Element Plus)
├── pc/ # 公共前台(Nuxt 3)
├── uniapp/ # 移动端(UniApp)
├── server/ # 后端(ThinkPHP 8)
│ ├── plugins/ # 插件应用源码(plugin.json + 后端 + 租户前端 + UniApp)
│ └── plugin_packages/ # 上传插件 zip 备份目录
├── docker/ # Docker 部署配置
├── docs/ # 文档站(VitePress)
└── scripts/ # 工具脚本后端 server/
server/
├── app/
│ ├── platformapi/ # 平台超管 API
│ │ ├── controller/v1/ # 控制器
│ │ ├── middleware/ # 中间件(认证、权限)
│ │ ├── route/ # 路由定义
│ │ └── validate/v1/ # 表单验证
│ ├── tenantapi/ # 租户后台 API
│ │ ├── controller/v1/ # 控制器
│ │ ├── middleware/ # 中间件(认证、权限、日志)
│ │ ├── route/ # 路由定义
│ │ └── validate/v1/ # 表单验证
│ ├── api/ # 公共 API(前台 + 支付回调)
│ ├── command/ # CLI 命令(saas:* + 代码生成器)
│ ├── listener/ # 事件监听器
│ ├── model/
│ │ ├── saas/ # SaaS 模型(Tenant/Plan/Subscription...)
│ │ ├── system/ # 系统模型(Admin/Role/Menu...)
│ │ └── ... # 业务模型
│ ├── repository/
│ │ ├── saas/ # SaaS Repository
│ │ └── ... # 业务 Repository
│ └── service/
│ ├── saas/ # SaaS Service
│ └── ... # 业务 Service
├── core/ # 框架核心层
│ ├── auth/ # JWT 认证(TokenManager)
│ ├── base/ # 基类(Controller/Service/Repository/Model)
│ ├── tenant/ # 多租户(TenantContext/Middleware)
│ ├── plugin/ # 插件扫描、安装、加载、迁移、菜单安装
│ ├── mobile/ # 租户移动端构建和插件 UniApp 合并
│ ├── saas/payment/ # SaaS 支付网关
│ ├── payment/ # 业务支付网关
│ ├── storage/ # 文件存储
│ └── cache/ # 缓存驱动(TenantRedisDriver)
├── config/ # 配置文件
├── database/migrations/ # 数据库迁移
├── plugins/ # 插件应用目录
│ └── mall/
│ ├── plugin.json # 插件 manifest
│ ├── app/ # 插件后端代码
│ ├── migrations/ # 插件数据库迁移
│ ├── tenant/ # 租户后台页面和 API
│ └── uniapp/ # 移动端分包源码
├── tests/ # 测试
│ └── RedLine/ # 红线测试
└── public/ # Web 入口
└── install/ # 安装向导前端通用结构
platform/ 和 tenant/ 共用相同的目录规范:
src/
├── api/ # API 接口定义,每个模块一个文件
├── assets/ # 静态资源
├── components/ # 通用组件
├── directives/ # 自定义指令(v-has-perm 等)
├── hooks/ # 组合式函数(useListPage 等)
├── layout/ # 布局组件(侧边栏、顶栏)
├── locales/ # i18n 语言包
├── router/ # 路由
├── store/modules/ # Pinia 状态管理
├── styles/ # 全局样式
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
└── views/ # 页面组件(按模块目录组织)关键文件说明
| 文件 | 作用 |
|---|---|
core/tenant/TenantContext.php | 请求级租户上下文,栈式 singleton |
core/auth/TokenManager.php | JWT 管理,支持 scope('platform') / scope('tenant') |
core/base/Repository.php | Repository 基类,query() 自动注入 tenant scope |
core/plugin/PluginManifestValidator.php | 插件 manifest 校验和默认值归一 |
core/plugin/PluginLoader.php | 插件运行时 PSR-4、路由和中间件挂载 |
core/mobile/PagesJsonGenerator.php | 按租户权益合并 UniApp 插件页面 |
core/cache/TenantRedisDriver.php | Redis 缓存驱动,按租户前缀隔离 |
config/saas.php | SaaS 核心配置(域名、宽限期、支付等) |
server/.env | 环境变量(数据库、Redis、JWT 密钥等) |
