dataplatform/APPData/Router/LawsuitRouter.py

123 lines
5.0 KiB
Python

import requests
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from APPData.Crud import CompanyCrud, LawsuitCrud
from Utils.AccessControl.AccessUtil import rbac
from Utils.DataBase.MongoHelperUtils import get_mongodb, get_tyc_mongodb
from Utils.DataBase.SqlAlchemyUtils import get_db
from Utils.TycApi.CommonUtil import CommonUtils
from Utils.TycApi.Configure import DB_SFFX
from Utils.TycApi.Lawsuit import get_tyc_data
router = APIRouter(
tags=["法律诉讼"],
prefix="/api/wide_data/lawsuit",
dependencies=[Depends(rbac)]
)
@router.get("/pull", summary="拉取数据")
def func01(name: str, db: Session = Depends(get_db)):
mongodb = get_mongodb()
tyc_mongodb = get_tyc_mongodb()
# 根据name查询企业是否存在
data = CompanyCrud.get_company_by_name(db=db, name=name)
if not data:
# 不能存在新建企业再返回cid
data = CompanyCrud.create_company_by_name(db=db, name=name)
cid = data.id
# 查询数据库是否有此条数据
search_data = mongodb.find_data("WR_DataBase", 'C9.6_法律诉讼', {"企业ID": cid}, [])
if search_data:
return {"info": "Data already exists", "Datail": search_data}
# 拉取天眼查数据到mongodb
tyc_res = get_tyc_data(name)
if tyc_res != 'success':
raise HTTPException(status_code=401, detail=tyc_res)
# 查询天眼查数据库
tyc_data = tyc_mongodb.find_data(DB_SFFX, '法律诉讼', {"企业名称": name}, ['法律诉讼'])
if not tyc_data:
raise HTTPException(status_code=401, detail='Data query failed')
record = tyc_data.get('法律诉讼', dict())
record = record.get('result', list())
for item in record:
data = dict()
data['企业ID'] = cid
data['id'] = item.get('id', None)
data['标题'] = item.get('title', None)
data['案由'] = item.get('caseReason', None)
data['案号'] = item.get('caseNo', None)
data['涉案方'] = list()
persons = item.get('casePersons', list())
for person in persons:
person_dict = dict()
person_dict['案件身份'] = person.get('role')
person_dict['名称'] = person.get('name')
person_dict['裁判结果'] = person.get('result')
data['涉案方'].append(person_dict)
data['发布日期'] = CommonUtils.time_stamp(item.get('submitTime', None))
data['裁判日期'] = item.get('judgeTime', None)
data['更新时间'] = CommonUtils.get_current_time()
# 保存到数据到data_business
LawsuitCrud.create_lawsuit_by_id(db=db, mongodb=mongodb, _id=cid, content=data)
mongodb.client.close()
tyc_mongodb.client.close()
return {"info": "Pull succeeded"}
@router.post("/update", summary="更新数据")
def func02(cid: str, db: Session = Depends(get_db)):
mongodb = get_mongodb()
tyc_mongodb = get_tyc_mongodb()
# 查询企业是否存在
db_item = CompanyCrud.get_company_by_id(db, _id=cid)
if not db_item:
raise HTTPException(status_code=204, detail="Company Not Found")
name = db_item.name
# 拉取天眼查数据到mongodb
tyc_res = get_tyc_data(name)
if tyc_res != 'success':
raise HTTPException(status_code=401, detail=tyc_res)
# 查询天眼查数据库
tyc_data = tyc_mongodb.find_data(DB_SFFX, '法律诉讼', {"企业名称": name}, ['法律诉讼'])
if not tyc_data:
raise HTTPException(status_code=401, detail='Data query failed')
record = tyc_data.get('法律诉讼', dict())
record = record.get('result', list())
for item in record:
data = dict()
data['企业ID'] = cid
data['id'] = item.get('id', None)
data['标题'] = item.get('title', None)
data['案由'] = item.get('caseReason', None)
data['案号'] = item.get('caseNo', None)
data['涉案方'] = list()
persons = item.get('casePersons', list())
for person in persons:
person_dict = dict()
person_dict['案件身份'] = person.get('role')
person_dict['名称'] = person.get('name')
person_dict['裁判结果'] = person.get('result')
data['涉案方'].append(person_dict)
data['发布日期'] = CommonUtils.time_stamp(item.get('submitTime', None))
data['裁判日期'] = item.get('judgeTime', None)
data['更新时间'] = CommonUtils.get_current_time()
# 保存到数据到data_lawsuit
LawsuitCrud.update_lawsuit_by_id(mongodb=mongodb, _id=data['id'], content=data)
mongodb.client.close()
tyc_mongodb.client.close()
return {"info": "Update succeeded"}
@router.get("/view", summary="查看数据")
def func03(cid: str, db: Session = Depends(get_db)):
mongodb = get_mongodb()
# 查询mysql数据库中的_id
db_item = CompanyCrud.get_company_by_id(db, _id=cid)
if not db_item:
raise HTTPException(status_code=204, detail="Company Not Found")
# 根据_id查询mongodb数据库
data = LawsuitCrud.find_lawsuit_by_id(db=db, mongodb=mongodb, _id=cid)
return data