房子管理

## 房子管理 ### 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" } ```