#!/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