eden-basic/docs/树形接口.md
zhongchangyuyu fde29b7072 资源管理
2025-04-23 15:58:01 +08:00

5.7 KiB
Raw Permalink Blame History

项目树形结构查询接口文档

接口说明

该接口用于获取项目、楼宇、楼层和房源的树形结构数据用于前端展示树形结构。支持通过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

返回示例

[
  {
    "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只返回项目信息

[
  {
    "id": "P001",
    "projectName": "科技园区",
    "projectType": "产业园区"
  }
]

level=2返回项目和楼宇信息

[
  {
    "id": "P001",
    "projectName": "科技园区",
    "projectType": "产业园区",
    "buildings": [
      {
        "id": "B001",
        "buildingName": "A栋",
        "buildingCode": "A"
      }
    ]
  }
]

level=3返回项目、楼宇和楼层信息

[
  {
    "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 服务器内部错误

调用示例

// 使用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. 可以考虑使用懒加载方式,先加载上层数据,再根据需要加载下层数据