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): arrayProjectMemberService
成员管理服务 - 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): arrayProjectTableNameGenerator
表名生成服务 - 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