workspace
工作空间
支撑服务层多租户隔离
数据隔离 + 独立配置 + 成员管理通过工作空间 ID 实现租户隔离,查询时自动添加过滤条件
多租户隔离
数据隔离 + 独立配置 + 成员管理通过工作空间 ID 实现租户隔离,查询时自动添加过滤条件
在 SaaS 场景下,多个团队使用同一个系统,如何实现数据隔离?如何让每个团队有独立的配置(工作项类型、流程模板、自动化规则)?如何管理成员和权限?
工作空间实体 - 多租户的核心
@Data
@TableName("t_workspace")
public class Workspace {
@TableId(type = IdType.AUTO)
private Long id;
// 工作空间名称
private String name;
// 工作空间标识(URL 友好)
private String code;
// 所有者 ID
private String ownerId;
// 成员数量
private Integer memberCount;
// 状态(正常/停用)
private WorkspaceStatus status;
// 配置(JSON 格式)
private String config;
}工作空间服务 - 数据隔离的实现
@Service
public class WorkspaceService {
/**
* 获取当前用户的工作空间
*/
public Workspace getCurrentWorkspace() {
String workspaceId = WorkspaceContext.getWorkspaceId();
return getById(workspaceId);
}
/**
* 查询工作项时自动添加工作空间过滤
*/
public List<WorkItem> listWorkItems(WorkItemDTO dto) {
LambdaQueryWrapper<WorkItem> wrapper = new LambdaQueryWrapper<>();
// 自动添加工作空间过滤条件
wrapper.eq(WorkItem::getWorkspaceId, getCurrentWorkspace().getId());
// 其他查询条件...
return list(wrapper);
}
}