Skip to Content
🚀 Drubase One v1.1 - 基于 Drupal 11 的多租户后端即服务平台
Docs模块模块参考

模块参考

Drubase One 由 8 个核心 BaaS 模块组成,每个模块负责特定的功能领域。

📦 模块架构

Drubase One BaaS Platform ├── 核心基础模块 │ ├── baas_tenant (租户管理) │ ├── baas_project (项目组织) │ └── baas_auth (认证授权) ├── 数据与 API 模块 │ ├── baas_entity (动态实体) │ ├── baas_api (RESTful API) │ └── baas_file (文件管理) └── 高级功能模块 ├── baas_realtime (实时通信) └── baas_functions (无服务器函数)

🎯 模块概述

BaaS Tenant - 租户管理

核心功能:

  • 多租户隔离架构
  • 租户生命周期管理
  • 用户-租户映射关系
  • 租户级别的配置和资源限制

主要类:

  • TenantManager - 租户管理服务
  • TenantService - 租户业务逻辑
  • TenantController - 租户 API 控制器
  • TenantAccessChecker - 租户访问控制

适用场景:

  • SaaS 多租户应用
  • 数据隔离需求
  • 租户级别计费

BaaS Entity - 动态实体

核心功能:

  • 动态实体模板定义
  • 运行时创建数据表
  • 字段类型系统
  • 实体 CRUD 操作
  • PHP 类文件自动生成

主要类:

  • EntityTemplateManager - 实体模板管理
  • DynamicEntityService - 动态实体服务
  • EntityFieldManager - 字段管理
  • ProjectTableNameGenerator - 表名生成器

适用场景:

  • 无代码/低代码平台
  • 用户自定义数据模型
  • 快速原型开发

BaaS API - RESTful API

核心功能:

  • RESTful API 接口
  • Token Bucket 速率限制
  • API 路由管理
  • 请求/响应规范化
  • Swagger/OpenAPI 文档

主要类:

  • ApiController - API 基础控制器
  • RateLimitService - 速率限制服务
  • ApiRateLimitSubscriber - 速率限制事件订阅
  • ApiResponseFormatter - 响应格式化

适用场景:

  • 前端应用对接
  • 移动应用后端
  • 第三方集成

BaaS Auth - 认证授权

核心功能:

  • JWT 认证
  • 基于角色的访问控制 (RBAC)
  • 项目级权限管理
  • 统一权限检查器
  • API Token 管理

主要类:

  • JwtAuthService - JWT 认证服务
  • UnifiedPermissionChecker - 统一权限检查
  • ProjectPermissionService - 项目权限服务
  • AuthController - 认证 API 控制器

适用场景:

  • API 安全访问
  • 多级权限控制
  • 细粒度授权

BaaS Project - 项目管理

核心功能:

  • 项目生命周期管理
  • 项目成员管理
  • 项目角色系统
  • 项目级别资源隔离

主要类:

  • ProjectManager - 项目管理服务
  • ProjectService - 项目业务逻辑
  • ProjectMemberService - 成员管理
  • ProjectController - 项目 API 控制器

适用场景:

  • 协作平台
  • 多项目管理
  • 团队工作空间

BaaS File - 文件管理

核心功能:

  • 文件上传和下载
  • 文件存储管理
  • 文件访问控制
  • 项目级文件归属
  • 文件使用统计

主要类:

  • FileService - 文件服务
  • FileUploadService - 上传处理
  • FileAccessChecker - 文件访问控制
  • FileController - 文件 API 控制器

适用场景:

  • 用户文件管理
  • 媒体资源存储
  • 文件共享功能

BaaS Realtime - 实时通信

核心功能:

  • WebSocket 连接管理
  • 实时消息推送
  • 频道订阅系统
  • 在线状态管理

主要类:

  • RealtimeService - 实时服务
  • WebSocketManager - WebSocket 管理
  • ChannelManager - 频道管理
  • RealtimeController - 实时 API 控制器

适用场景:

  • 实时聊天
  • 协作编辑
  • 推送通知

BaaS Functions - 无服务器函数

⚠️ 待验证 - 此模块功能正在验证中

核心功能:

  • Node.js 函数执行
  • HTTP 触发器
  • 定时任务调度
  • 函数日志管理

主要类:

  • FunctionService - 函数服务
  • FunctionExecutor - 函数执行器
  • TriggerManager - 触发器管理
  • FunctionController - 函数 API 控制器

适用场景:

  • 业务逻辑扩展
  • 定时任务
  • Webhook 处理

🔄 模块依赖关系

baas_auth baas_tenant → baas_project → baas_entity → baas_api ↓ ↓ ↓ baas_file baas_realtime baas_functions

依赖说明:

  • 所有模块依赖 Drupal 11 核心
  • baas_auth 提供统一的权限检查,被所有模块使用
  • baas_tenantbaas_project 是基础模块
  • baas_entity 依赖项目结构
  • 功能模块依赖基础模块提供的服务

📖 使用文档

每个模块的详细文档包含:

  1. 架构设计 - 模块设计理念和架构图
  2. 核心类 - 重要类的说明和方法签名
  3. 服务注册 - services.yml 配置说明
  4. API 接口 - RESTful API 端点文档
  5. 数据库表 - 表结构和字段说明
  6. 配置选项 - 可配置项和默认值
  7. 使用示例 - 代码示例和最佳实践
  8. 扩展指南 - 如何基于模块进行扩展

🔍 快速查找

按功能查找

  • 用户认证baas_auth
  • 数据存储baas_entity
  • API 开发baas_api
  • 文件上传baas_file
  • 实时功能baas_realtime
  • 后台任务baas_functions
  • 多租户baas_tenant
  • 团队协作baas_project

按使用频率

高频使用:

  1. baas_entity - 数据模型必备
  2. baas_api - API 开发必备
  3. baas_auth - 认证授权必备

中频使用: 4. baas_project - 多项目管理 5. baas_file - 文件功能 6. baas_tenant - 多租户场景

按需使用: 7. baas_realtime - 需要实时通信时 8. baas_functions - 需要函数计算时

💡 使用建议

模块选择

  1. 核心模块 (必用):

    • baas_entity - 动态实体数据模型
    • baas_api - RESTful API 接口
    • baas_auth - 认证授权
  2. 扩展模块 (按需):

    • baas_project - 多项目管理
    • baas_tenant - 多租户隔离
    • baas_file - 文件存储
  3. 高级模块 (可选):

    • baas_realtime - 实时通信
    • baas_functions - 函数计算

最佳实践

  1. 使用依赖注入

    public function __construct( protected readonly EntityTemplateManager $templateManager, protected readonly UnifiedPermissionChecker $permissionChecker, ) {}
  2. 遵循权限检查模式

    if (!$this->permissionChecker->canAccessProject($user_id, $project_id)) { throw new AccessDeniedHttpException(); }
  3. 使用事件系统

    $event = new EntityCreatedEvent($entity_template); $this->eventDispatcher->dispatch($event, EntityEvents::ENTITY_CREATED);
  4. 异常处理规范

    throw new EntityException( 'Error message', EntityException::ERROR_CODE, null, ['context' => $value] );

📚 相关资源

➡️ 模块文档

查看各模块详细文档:

Last updated on