230 lines
5.7 KiB
Markdown
230 lines
5.7 KiB
Markdown
# 项目树形结构查询接口文档
|
||
|
||
## 接口说明
|
||
该接口用于获取项目、楼宇、楼层和房源的树形结构数据,用于前端展示树形结构。支持通过level参数控制查询深度。
|
||
|
||
## 接口信息
|
||
- 接口名称:获取项目树形结构
|
||
- 请求方式:GET
|
||
- 接口路径:`/api/project-tree`
|
||
- 接口描述:查询所有项目及其下属的楼宇、楼层和房源信息,以树形结构返回
|
||
|
||
## 请求参数
|
||
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
||
|--------|------|------|--------|------|
|
||
| level | Integer | 否 | 4 | 查询层级:1-项目,2-楼宇,3-楼层,4-房源 |
|
||
|
||
## 返回参数
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | String | 项目ID |
|
||
| projectName | String | 项目名称 |
|
||
| projectType | String | 项目类型 |
|
||
| buildings | Array | 楼宇列表 |
|
||
|
||
### buildings 楼宇信息
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | String | 楼宇ID |
|
||
| buildingName | String | 楼宇名称 |
|
||
| buildingCode | String | 楼宇编号 |
|
||
| floors | Array | 楼层列表 |
|
||
|
||
### floors 楼层信息
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | String | 楼层ID |
|
||
| floorName | String | 楼层名称 |
|
||
| floorNumber | Integer | 楼层号 |
|
||
| rooms | Array | 房源列表 |
|
||
|
||
### rooms 房源信息
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | String | 房源ID |
|
||
| roomNumber | String | 房号 |
|
||
| roomType | String | 房源类型 |
|
||
| roomStatus | String | 房源状态 |
|
||
| buildingArea | BigDecimal | 建筑面积 |
|
||
| rentalArea | BigDecimal | 计租面积 |
|
||
|
||
## 请求示例
|
||
```
|
||
GET /api/project-tree?level=4
|
||
```
|
||
|
||
## 返回示例
|
||
```json
|
||
[
|
||
{
|
||
"id": "P001",
|
||
"projectName": "科技园区",
|
||
"projectType": "产业园区",
|
||
"buildings": [
|
||
{
|
||
"id": "B001",
|
||
"buildingName": "A栋",
|
||
"buildingCode": "A",
|
||
"floors": [
|
||
{
|
||
"id": "F001",
|
||
"floorName": "1层",
|
||
"floorNumber": 1,
|
||
"rooms": [
|
||
{
|
||
"id": "R001",
|
||
"roomNumber": "101",
|
||
"roomType": "办公",
|
||
"roomStatus": "待租",
|
||
"buildingArea": 100.00,
|
||
"rentalArea": 90.00
|
||
},
|
||
{
|
||
"id": "R002",
|
||
"roomNumber": "102",
|
||
"roomType": "办公",
|
||
"roomStatus": "已租",
|
||
"buildingArea": 120.00,
|
||
"rentalArea": 110.00
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "F002",
|
||
"floorName": "2层",
|
||
"floorNumber": 2,
|
||
"rooms": [
|
||
{
|
||
"id": "R003",
|
||
"roomNumber": "201",
|
||
"roomType": "办公",
|
||
"roomStatus": "待租",
|
||
"buildingArea": 150.00,
|
||
"rentalArea": 140.00
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
```
|
||
|
||
## 不同层级返回示例
|
||
|
||
### level=1(只返回项目信息)
|
||
```json
|
||
[
|
||
{
|
||
"id": "P001",
|
||
"projectName": "科技园区",
|
||
"projectType": "产业园区"
|
||
}
|
||
]
|
||
```
|
||
|
||
### level=2(返回项目和楼宇信息)
|
||
```json
|
||
[
|
||
{
|
||
"id": "P001",
|
||
"projectName": "科技园区",
|
||
"projectType": "产业园区",
|
||
"buildings": [
|
||
{
|
||
"id": "B001",
|
||
"buildingName": "A栋",
|
||
"buildingCode": "A"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
```
|
||
|
||
### level=3(返回项目、楼宇和楼层信息)
|
||
```json
|
||
[
|
||
{
|
||
"id": "P001",
|
||
"projectName": "科技园区",
|
||
"projectType": "产业园区",
|
||
"buildings": [
|
||
{
|
||
"id": "B001",
|
||
"buildingName": "A栋",
|
||
"buildingCode": "A",
|
||
"floors": [
|
||
{
|
||
"id": "F001",
|
||
"floorName": "1层",
|
||
"floorNumber": 1
|
||
},
|
||
{
|
||
"id": "F002",
|
||
"floorName": "2层",
|
||
"floorNumber": 2
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
```
|
||
|
||
## 错误码说明
|
||
| 错误码 | 说明 |
|
||
|--------|------|
|
||
| 200 | 请求成功 |
|
||
| 400 | 请求参数错误 |
|
||
| 500 | 服务器内部错误 |
|
||
|
||
## 调用示例
|
||
```javascript
|
||
// 使用fetch调用示例
|
||
fetch('/api/project-tree?level=4')
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
console.log(data);
|
||
// 处理返回的树形结构数据
|
||
})
|
||
.catch(error => {
|
||
console.error('Error:', error);
|
||
});
|
||
|
||
// 使用axios调用示例
|
||
axios.get('/api/project-tree', {
|
||
params: {
|
||
level: 4
|
||
}
|
||
})
|
||
.then(response => {
|
||
console.log(response.data);
|
||
// 处理返回的树形结构数据
|
||
})
|
||
.catch(error => {
|
||
console.error('Error:', error);
|
||
});
|
||
```
|
||
|
||
## 注意事项
|
||
1. 接口返回的数据已经按照树形结构组织,前端可以直接用于树形组件的展示
|
||
2. 所有数据都已经按照层级关系进行了关联
|
||
3. 返回的数据中只包含未删除的记录(del_flag = '0')
|
||
4. 楼层数据按照楼层号(floor_number)升序排序
|
||
5. 房源数据按照房间数字编号(room_digital_number)升序排序
|
||
6. level参数用于控制查询深度,可以根据实际需求选择不同的层级
|
||
|
||
## 前端使用建议
|
||
1. 可以使用树形组件(如Element UI的Tree组件)来展示数据
|
||
2. 建议对数据进行缓存,避免频繁请求
|
||
3. 可以根据业务需求对数据进行过滤或搜索
|
||
4. 建议添加加载状态和错误处理
|
||
5. 可以根据实际需求选择不同的level参数,减少不必要的数据传输
|
||
|
||
## 性能优化建议
|
||
1. 如果数据量较大,建议使用较小的level参数,只加载必要的数据
|
||
2. 可以考虑添加缓存机制
|
||
3. 可以根据实际需求只返回必要的字段
|
||
4. 建议添加数据压缩功能
|
||
5. 可以考虑使用懒加载方式,先加载上层数据,再根据需要加载下层数据 |