__init__.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
  4. from common.security import valid_access_token
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy.sql import func
  7. from common.auth_user import *
  8. from sqlalchemy import text
  9. from pydantic import BaseModel
  10. from common.BigDataCenterAPI import *
  11. from database import get_db
  12. from typing import List
  13. from models import *
  14. from utils import *
  15. from utils.spatial import *
  16. import json
  17. import traceback
  18. router = APIRouter()
  19. class location_c(BaseModel):
  20. x:float
  21. y:float
  22. class mine(BaseModel):
  23. location : List=[]
  24. @router.post('/get_info')
  25. async def mine(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
  26. try:
  27. # 验证必需的字段
  28. # required_fields = ['location','location_c']
  29. # missing_fields = [field for field in required_fields if field not in body]
  30. # if missing_fields:
  31. # raise HTTPException(status_code=401, detail=f"Missing required fields: {', '.join(missing_fields)}")
  32. # 行政镇、行政村数据
  33. # town_village_data,town_count,village_count = count_town_village(from_data.location,db)
  34. town_village_data,town_count = get_town_list(body)
  35. # emergency_expert_count = count_emergency_expert(from_data.location,db)
  36. # emergency_management_count = count_emergency_management(from_data.location,db)
  37. return {
  38. "code": 200,
  39. "msg": "成功",
  40. "data": {
  41. "townData":town_village_data,
  42. "townCount":town_count,
  43. # "villageCount":village_count,
  44. "populationSize":0,
  45. "areaSize":0,
  46. "GDP":0,
  47. "list":[{
  48. "name":"应急避难场所","num":0
  49. },{
  50. "name":"易涝点","num":0
  51. },{
  52. "name":"医院","num":1,"list":[{"name":"测试","longitude":111.275362017,"latitude":21.9912508420001}]
  53. }
  54. ],
  55. # "emergencyExpertCount":emergency_expert_count,
  56. # "emergencyManagementCount":emergency_management_count
  57. }
  58. }
  59. except Exception as e:
  60. db.rollback()
  61. traceback.print_exc()
  62. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")