# 项目树形结构查询接口文档 ## 接口说明 该接口用于获取项目、楼宇、楼层和房源的树形结构数据,用于前端展示树形结构。支持通过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. 可以考虑使用懒加载方式,先加载上层数据,再根据需要加载下层数据