positioning.py 885 B

123456789101112131415161718192021222324252627282930
  1. from typing import List
  2. from fastapi import APIRouter, HTTPException, Query
  3. from loguru import logger
  4. from app.controllers.location.ble.space import get_space_location
  5. from app.models.domain.location import PositionSpaceResponse
  6. from app.schemas.bluetooth import IBeaconBase
  7. router = APIRouter()
  8. @router.post('/space/users/{user_id}/projects/{project_id}', response_model=PositionSpaceResponse)
  9. async def update_in_space(user_id: str, project_id: str, ibeacon_list: List[IBeaconBase]):
  10. space_id = await get_space_location(project_id, ibeacon_list)
  11. logger.debug(f'{user_id} is in {space_id}')
  12. response = {
  13. 'userId': user_id,
  14. 'projectId': project_id
  15. }
  16. if space_id:
  17. response.update({
  18. 'result': 'success',
  19. 'spaceId': space_id
  20. })
  21. else:
  22. response.update({'result': 'failure'})
  23. return response