# 【可直接投喂AI·优化版需求说明】 你好,我现在需要对我的项目进行**多租户二级域名绑定官网系统**的整体改造,请根据我的现有项目结构和需求,帮我完成所有代码修改。 ## 一、现有项目结构 我有三个独立项目: 1. **frontend**:前端官网展示,使用 Vite 构建 2. **backend**:后台管理系统,使用 Vite 构建 3. **tp**:后端 API 服务,使用 ThinkPHP 框架 整套平台是**多租户 SaaS 模式**,为企业用户建设官网使用,**所有租户共用一个数据库,不独立分库**,通过租户 ID 做数据隔离。 ## 二、要实现的核心功能 1. 我在后台配置一批我已购买备案的**主域名**,形成域名池。 2. 企业用户登录租户后台,可以**申请二级域名**。 3. 租户选择主域名 + 自定义二级前缀,提交申请,管理员审核。 4. 租户访问自己申请的**二级域名**时,系统自动识别对应租户,并展示该租户在 CMS 中选择的官网页面。 5. 访问规则: - `admin.xxx.com` → 后台管理系统 - `www.xxx.com` / 裸域名 → 平台官网 - 其他二级域名 → 对应租户的官网 ## 三、数据库表结构(已建好) 我已经建好两张域名相关表,结构如下,你必须严格按这两张表开发: ### 1. 主域名池表:`mete_system_domain_pool` ```sql CREATE TABLE `mete_system_domain_pool` ( `id` int(11) NOT NULL COMMENT 'id', `main_domain` varchar(255) DEFAULT NULL COMMENT '主域名', `status` int(11) DEFAULT NULL COMMENT '状态 0-禁用 1-启用', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ``` ### 2. 租户域名绑定表:`mete_tenant_domain` ```sql CREATE TABLE `mete_tenant_domain` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `tenant_id` int(11) DEFAULT NULL COMMENT '租户 ID', `sub_domain` varchar(50) DEFAULT NULL COMMENT '二级域名前缀', `main_domain` varchar(255) DEFAULT NULL COMMENT '绑定的主域名', `full_domain` varchar(255) DEFAULT NULL COMMENT '完整域名', `status` int(11) DEFAULT NULL COMMENT '状态(1 已生效 / 0 审核中 / 2 禁用)', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ``` ## 四、你需要帮我完成的改造内容 1. **ThinkPHP 后端** - 编写**全局域名解析中间件**:通过访问域名自动识别租户。 - 实现主域名池管理接口(增删改查、启用禁用)。 - 实现租户二级域名申请、列表查询接口。 - 实现管理员审核租户域名接口。 - 所有租户相关接口必须自动带上 `tenant_id` 做数据隔离。 2. **backend 后台(Vite + Vue)** - 管理员端:主域名池管理页面。 - 管理员端:租户域名审核页面。 - 租户端:二级域名申请页面、我的域名列表页面。 3. **nginx 配置** - 给出可直接使用的泛域名解析、路由转发配置。 - 区分后台、官网、租户二级域名。 4. **整体逻辑要求** - 多租户共用数据库,不独立库,只按 `tenant_id` 隔离。 - 二级域名唯一,不能重复。 - 支持软删除 `delete_time`。 - 域名状态严格按我给的字段逻辑。 ## 五、你的输出要求 - 直接按我现有项目结构**给出完整可替换的文件与代码**。 - 标明每个文件路径、作用、代码内容。 - 不要解释原理,直接输出可使用代码。 - 严格使用我提供的表名与字段,不要新增或修改字段。