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

BaaS Project 模块

项目管理模块 - 租户下的工作空间和成员管理。

📦 模块信息

  • 依赖: baas_tenant
  • 位置: web/modules/custom/baas_project/

🏗️ 架构设计

核心概念

项目(Project)是租户下的工作空间:

  • 属于特定租户
  • 包含动态实体
  • 独立的成员和权限
  • 独立的数据表

数据库表

baas_project_config - 项目配置

CREATE TABLE baas_project_config ( id SERIAL PRIMARY KEY, project_id VARCHAR(255) UNIQUE NOT NULL, tenant_id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description TEXT, owner_uid INTEGER NOT NULL, status INTEGER DEFAULT 1, created INTEGER, updated INTEGER );

baas_project_members - 项目成员

CREATE TABLE baas_project_members ( id SERIAL PRIMARY KEY, project_id VARCHAR(255) NOT NULL, user_id INTEGER NOT NULL, role VARCHAR(50) NOT NULL, created INTEGER );

🔧 主要类和方法

ProjectManager

项目管理服务 - src/Service/ProjectManager.php

// 创建项目 public function createProject(array $project_data): array // 获取项目 public function getProject(string $project_id): ?array // 更新项目 public function updateProject(string $project_id, array $updates): bool // 删除项目 public function deleteProject(string $project_id): bool // 获取租户的所有项目 public function getTenantProjects(string $tenant_id): array

ProjectMemberService

成员管理服务 - src/Service/ProjectMemberService.php

// 添加成员 public function addMember(string $project_id, int $user_id, string $role): bool // 移除成员 public function removeMember(string $project_id, int $user_id): bool // 更新成员角色 public function updateMemberRole(string $project_id, int $user_id, string $role): bool // 获取项目成员 public function getProjectMembers(string $project_id): array // 获取用户的项目 public function getUserProjects(int $user_id): array

ProjectTableNameGenerator

表名生成服务 - src/Service/ProjectTableNameGenerator.php

// 生成项目表名 public function generateTableName( string $tenant_id, string $project_id, string $entity_name ): string // 示例: baas_856064_users

📖 使用示例

创建项目

$project_manager = \Drupal::service('baas_project.manager'); $project = $project_manager->createProject([ 'project_id' => 'tenant_7375b0cd_project_' . bin2hex(random_bytes(6)), 'tenant_id' => 'tenant_7375b0cd', 'name' => 'Groups Sports', 'description' => '运动活动管理项目', 'owner_uid' => 2, ]);

管理成员

$member_service = \Drupal::service('baas_project.member_service'); // 添加成员 $member_service->addMember($project_id, $user_id, 'project_editor'); // 更新角色 $member_service->updateMemberRole($project_id, $user_id, 'project_manager'); // 获取成员列表 $members = $member_service->getProjectMembers($project_id);

🔌 服务注册

baas_project.services.yml:

services: baas_project.manager: class: Drupal\baas_project\Service\ProjectManager arguments: - '@database' - '@event_dispatcher' baas_project.member_service: class: Drupal\baas_project\Service\ProjectMemberService arguments: - '@database' - '@baas_project.manager' baas_project.table_name_generator: class: Drupal\baas_project\Service\ProjectTableNameGenerator

🔗 相关文档

Last updated on