82 lines
3.8 KiB
Markdown
82 lines
3.8 KiB
Markdown
# 【可直接投喂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`。
|
||
- 域名状态严格按我给的字段逻辑。
|
||
|
||
## 五、你的输出要求
|
||
- 直接按我现有项目结构**给出完整可替换的文件与代码**。
|
||
- 标明每个文件路径、作用、代码内容。
|
||
- 不要解释原理,直接输出可使用代码。
|
||
- 严格使用我提供的表名与字段,不要新增或修改字段。
|