history-project/SCLP/routers/edge_simulation_api.py
2024-10-24 09:23:39 +08:00

164 lines
5.6 KiB
Python

# -*- coding:utf-8 -*-
"""
@Author : xuxingchen
@Contact : xuxingchen@sinochem.com
@Desc : 模拟边缘对接所需的平台api接口
"""
from fastapi import APIRouter, Request, Query
from models.householders import HouseholdersTable
from models.houses import HousesTable
from models.spaces import SpacesTable
from models.subsystem import SubsystemTable, HouseDetailInfo
from routers.login import authenticate_token
from utils import logger
from utils.database import get_table_handler
from utils.misc import InvalidException, snake2camel_list_dict
router = APIRouter()
@router.post("/v2/accesskey_auth", summary="回传一个无效的随机字符串")
async def access_key_auth(_item: dict):
return {"access_token": "Q0E5QjU4QUNDMDA4MTY4RDNFNkRGRjNGNzQ4NDAzMTQ5OTVBMDQwODMyNjBFMjBCQkIwQjA2QzlCNUQ3MUY3NA=="}
@router.get("/v3/realty-master-data/owners/{user_id}", summary="根据用户 id 获取房产信息")
async def get_property_info_by_user_id(request: Request, user_id: int):
logger.Logger.debug(f"{request.url.path} <- {user_id}")
th = get_table_handler()
house_ids = HouseholdersTable.get_room_ids(th, user_id)
resp = {
"status": 200,
"msg": "ok",
"data": {
"house_ids": house_ids
},
"code": 200,
"det": 0
}
logger.Logger.debug(f"{request.url.path} {resp}")
return resp
@router.post("/v3/realty-master-data/houses", summary="根据房产 id 获取房产详细信息")
async def get_house_detail_info(request: Request, item: dict):
try:
logger.Logger.debug(f"{request.url.path} <- {item}")
house_ids = item["query"]["id"]["$in"]
house_detail_list = []
th = get_table_handler()
for house_id in house_ids:
house_detail_info = HousesTable.get_house_detail_info(th, house_id)
if house_detail_info is not None:
house_detail_list.append(house_detail_info)
resp = {
"status": 200,
"msg": "ok",
"data": {
"total_count": len(house_detail_list),
"total_page": 0,
"list": house_detail_list
},
"code": 200,
"det": 0
}
logger.Logger.debug(f"{request.url.path} {resp}")
return resp
except (KeyError, TypeError):
raise InvalidException("请求参数结构异常")
@router.post("/v2/realty-master-data/SubsystemSpaceMap/list", summary="查找空间结构中的房间信息")
async def get_subsystem_house_detail_info(request: Request, item: dict):
try:
logger.Logger.debug(f"{request.url.path} <- {item}")
project_id = item["query"]["project_id"]["$eq"]
th = get_table_handler()
data_list = SubsystemTable.get_house_detail_info_by_project_id(th, project_id)
resp = {
"status": 200,
"msg": "ok",
"data": {
"total_count": len(data_list),
"total_page": 0,
"list": data_list
},
"code": 200,
"det": 0
}
logger.Logger.debug(f"{request.url.path} -> {resp}")
return resp
except (KeyError, TypeError):
raise InvalidException("请求参数结构异常")
@router.post("/v2/realty-master-data/SubsystemSpaceMap/added", summary="添加房产信息")
async def add_subsystem_house_info(request: Request, item: HouseDetailInfo):
try:
logger.Logger.debug(f"{request.url.path} <- {item}")
th = get_table_handler()
SubsystemTable.add_sub_system_house_info(th, item)
resp = {
"status": 200,
"msg": "ok",
"data": item.message_id,
"code": 200,
"det": 0
}
logger.Logger.debug(f"{request.url.path} {resp}")
return resp
except (KeyError, TypeError):
raise InvalidException("请求参数结构异常")
@router.post("/v2/realty-master-data/SubsystemSpaceMap/update", summary="更新房产信息")
async def update_subsystem_house_info(request: Request, item: HouseDetailInfo):
try:
logger.Logger.debug(f"{request.url.path} <- {item}")
th = get_table_handler()
item.action = "update"
SubsystemTable.add_sub_system_house_info(th, item)
resp = {
"status": 200,
"msg": "ok",
"data": item.message_id,
"code": 200,
"det": 0
}
logger.Logger.debug(f"{request.url.path} {resp}")
return resp
except (KeyError, TypeError):
raise InvalidException("请求参数结构异常")
@router.post("/v2/smart-access/house/house_ty_maps", summary="查询房产的真实信息")
async def get_house_ty_info(request: Request, item: dict):
try:
logger.Logger.debug(f"{request.url.path} <- {item}")
project_id = item["query"]["project_id"]["$eq"]
room_id = item["query"]["_id"]["$eq"]
th = get_table_handler()
house_ty_info = HousesTable.get_house_ty_info(th, project_id, room_id)
if house_ty_info is None:
house_ty_infos = []
else:
house_ty_infos = [house_ty_info]
resp = {
"status": 200,
"msg": "ok",
"data": {
"count": 1,
"list": house_ty_infos,
"query_res": {
"count": 1,
"list": snake2camel_list_dict(house_ty_infos)
}
},
"det": 0
}
logger.Logger.debug(f"{request.url.path} {resp}")
return resp
except (KeyError, TypeError):
raise InvalidException("请求参数结构异常")