param.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from utils.sg_auth import *
  7. from models import *
  8. from sqlalchemy import text, exists, and_, or_, not_
  9. router = APIRouter()
  10. @router.post("/area")
  11. def get_area(request: Request,
  12. ext_info: str = Depends(yst_pass_ext),
  13. param: dict = Depends(yst_request_param),
  14. db: Session = Depends(get_db)):
  15. area_list = get_area_by_pid("0", 1, db)
  16. resp = {
  17. 'ret': 0,
  18. 'data': area_list
  19. }
  20. return yst_response(resp)
  21. def get_area_by_pid(
  22. parent_code: str,
  23. level: int,
  24. db: Session
  25. ):
  26. area_list = []
  27. if level > 3:
  28. return area_list
  29. q = db.query(GovdataArea).filter(and_(GovdataArea.parent_code == parent_code, GovdataArea.status == 1))
  30. rows = q.order_by(GovdataArea.area_code.asc()).all()
  31. for row in rows:
  32. area_info = {
  33. "area_code": row.area_code,
  34. "area_name": row.area_name,
  35. }
  36. sub_dqlist = get_area_by_pid(row.area_code, level + 1, db)
  37. if len(sub_dqlist) > 0:
  38. area_info['items'] = sub_dqlist
  39. area_list.append(area_info)
  40. return area_list