12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from fastapi import APIRouter, Request, Depends
- from database import get_db
- from sqlalchemy.orm import Session
- from utils.sg_auth import *
- from models import *
- from sqlalchemy import text, exists, and_, or_, not_
- router = APIRouter()
- @router.post("/area")
- def get_area(request: Request,
- ext_info: str = Depends(yst_pass_ext),
- param: dict = Depends(yst_request_param),
- db: Session = Depends(get_db)):
- area_list = get_area_by_pid("0", 1, db)
- resp = {
- 'ret': 0,
- 'data': area_list
- }
- return yst_response(resp)
- def get_area_by_pid(
- parent_code: str,
- level: int,
- db: Session
- ):
- area_list = []
- if level > 3:
- return area_list
-
- q = db.query(GovdataArea).filter(and_(GovdataArea.parent_code == parent_code, GovdataArea.status == 1))
- rows = q.order_by(GovdataArea.area_code.asc()).all()
- for row in rows:
- area_info = {
- "area_code": row.area_code,
- "area_name": row.area_name,
- }
- sub_dqlist = get_area_by_pid(row.area_code, level + 1, db)
- if len(sub_dqlist) > 0:
- area_info['items'] = sub_dqlist
- area_list.append(area_info)
- return area_list
|