房子管理
## 房子管理
### 1. 接口列表
|接口功能|请求方式|API|
|-|-|-|
|[获取用户所有的房子列表](#1)|HTTP|list_houses|
|[添加房子](#2)|HTTP|add_house|
|[删除房子](#3)|HTTP|delete_house|
|[修改房子名称/位置](#4)|HTTP|update_house, only support for name/location field|
|[发送加入房子邀请](#5)|HTTP|invite_house_member|
|[接受房子家庭成员邀请](#6)|HTTP|accept_house_member_invitation|
|[退出房子](#7)|HTTP|leave_house, 房子的成员退出该房子,房子owner无法退出,只能删除|
|[根据邮件地址获取用户id](#8)|HTTP|get_user_id_by_email, 用于在邀请房子成员时,查找成员的user_id|
|[根据电话号码获取用户id](#9)|HTTP|get_user_id_by_phone, 用于在邀请房子成员时,查找成员的user_id|
|[更新用户当前所在的房子](#10)|HTTP|update_current_house, 用于当用户切换房子的时候,向后台更新|
|[添加房间](#11)|HTTP|add_room|
|[删除房间](#12)|HTTP|delete_room|
|[获取房间]|Firestore|*collection.document.get()*|
|[获取房间列表](#13)|HTTP|list_rooms|
|[修改房间](#14)|HTTP|update_room, only support for name/floor/rank_id|
<span id="1"></span>
### 2. 获取用户所有的房子列表
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/list_houses
```
- HTTP Body Para
None
- 返回数据格式
```
data = [
{
"id": <house_id>,
"name": <house_name>,
"owner_id": <house_owner_user_id>,
"is_owner": True/False,
"is_current_house": True/False # 是否当前所在的house
"location": {"latitude":, "longtitude": ,"name": },
"room_counts": <total number of all the rooms>,
"device_counts": <total number of all the devices>,
"members": [
{"user_id": <user_id>, "name": <user_nick_name>, "role": "Owner/Member"}
]
},
]
```
<span id="2"></span>
### 3. 添加房子
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/add_house
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_name|String|房子的名称|
|house_location|Object|(可选)房间的位置信息|
house_location字段:
|字段|类型|描述|
|-|-|-|
|latitude|Number|房子的纬度|
|longtitude|Number|房子的经度|
|name|Number|房子位置的名称|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": {
"id": <house_id>,
"name": <house_name>,
"owner_id": <house_owner_user_id>,
"is_owner": True/False,
"is_current_house": True/False # 是否当前所在的house
"location": {"latitude":, "longtitude": ,"name": },
"room_counts": <total number of all the rooms>,
"device_counts": <total number of all the devices>,
"members": [
{"user_id": <user_id>, "name": <user_nick_name>, "role": "Owner/Member", "is_accepted":True/False}
]
},
"message": "success"
}
```
house_data 内容格式:
|字段|类型|描述|
|-|-|-|
|id|String|房子的id|
|name|string|房子的名称|
|owner_id|String|房子Owner的user_id|
|is_owner|boolean|当前用户是否该房子的owner|
|is_current_house|boolean|当前用户是否使用该房子作为当前所在的房子|
|location|object|房子位置信息|
|room_counts|Number|房子的房间总数|
|device_counts|Number|房子的设备总数|
|members|list<member>|房子的成员列表|
member 内容格式
|user_id|String|房子成员的user_id|
|name|String|房子成员的昵称|
|role|String|房子成员的角色, Owner 或者 Member|
|is_accepted|boolean|房子成员是否已经接受邀请 成为该房子的成员|
<span id="3"></span>
### 4. 删除房子
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/delete_house
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
>d 只有 房子的owner 才能删除自己的房子,房子成员无法删除房子,只能退出房子。
<span id="4"></span>
### 5. 修改房子名称/位置
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/update_house
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
|house_name|String|房子的名称|
|house_location|Object|房子的位置信息|
>d house_name或者house_location,必须提供至少其中一个参数
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
>d 只有 房子的owner 才能修改房子的名称和位置,房子成员无法进行该操作。
<span id="5"></span>
### 6. 发送加入房子邀请
>w 用户加入其他用户的房子的过程是:
(1)房子的owner用户 发送加入房子邀请 给 目标用户,这个会发送一条房子成员邀请消息给目标用户
(2)目标用户在消息中心 查看消息,并点击 accept 接受邀请,正式成为房子的成员。
如果目标用户,不想继续成员房子的成员,可以退出该房子。
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/invite_house_member
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
|member_user_id|String|邀请对象的user_id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
>d 只有 房子的owner 才能发起房子成员邀请,房子成员无法进行该操作。
<span id="6"></span>
### 7. 接受房子家庭成员邀请
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/accept_house_member_invitation
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|message_id|String|邀请消息的消息id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
<span id="7"></span>
### 8. 退出房子
>d 房子的成员 退出房子,房子的owner无法执行该操作,只能删除房子。
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/leave_house
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
<span id="8"></span>
### 9. 根据邮件地址获取用户id
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/get_user_id_by_email
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|email|String|邮件地址|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": {"user_id": <user_id>},
"message": "success"
}
```
<span id="9"></span>
### 10. 根据电话号码获取用户id
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/get_user_id_by_phone
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|phone|String|电话号码, +86139xxxxxxxx|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": {"user_id": <user_id>},
"message": "success"
}
```
<span id="10"></span>
### 11. 更新用户当前所在的房子
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/update_current_house
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
<span id="11"></span>
### 12. 添加房间
>d 只有房子的owner 才能执行该操作,房子的其他成员没有该权限。
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/add_room
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
|room_name|String|房间的名称|
|room_floor|Number|房间所在的楼层|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": {
"id": <room_id>,
"name": <room_name>,
"floor": <room_floor>,
"rank_id": <room_rank_id>
},
"message": "success"
}
```
<span id="12"></span>
### 13. 删除房间
>d 只有房子的owner 才能执行该操作,房子的其他成员没有该权限。
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/delete_room
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
|room_id|String|房间的id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```
<span id="13"></span>
### 14. 获取房间列表
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/list_rooms
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|owner_id|String|房子的owner的user_id|
|house_id|String|房子的id|
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data":[
{
"id": <room_id>,
"name": <room_name>,
"floor": <room_floor>,
"rank_id": <room_rank_id>,
"devices": [<device_id>, <device_id>]
}
],
"message": "success"
}
```
<span id="14"></span>
### 15. 修改房间
>d 只有房子的owner 才能执行该操作,房子的其他成员没有该权限。
- 请求方式
```
HTTP Post
```
- HTTP URL
```
{base_url}/update_room
```
- HTTP Body Para
|参数名称|类型|描述|
|-|-|-|
|house_id|String|房子的id|
|room_id|String|房间的id|
|room_name|String|房间的名称|
|room_floor|Number|房间的楼层|
|room_rank_id|Number|房间的排序id|
>d room_name, room_floor, room_rank_id 必须至少提供其中一个
- 返回数据格式
code/message字段具体参考 《概述》章节,data字段的内容,为房子的数据
```
{
"code": 200,
"data": None,
"message": "success"
}
```