from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from Context.common import CompanyUserTokenDataModel, company_user_auth_util, common_db, mg_db, AdminUserTokenDataModel, \ admin_user_auth_util from . import Crud from . import Schemas from .Models import RateFlow, RateFlowNode from Utils.MongoUtils import MongoConnect """ 一个流程所需的基本接口 """ router = APIRouter(prefix="/rate_flow") @router.post("/create_rate_flow_from_company_user", summary="企业用户创建评级流程") def func(token: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db)): company_name = token.company_name rate_flow = Crud.create_rate_flow(db, company_name) nodes = ["表单填报", "三方数据录入", "后台审核校正", "评级"] for node_num in range(len(nodes)): node_name = nodes[node_num] Crud.create_rate_flow_node(db, node_num=node_num, node_name=node_name, rate_process_id=rate_flow.id) return {"message": "创建成功", "code": 200} @router.post("/get_rate_flow_by_id", summary="获取评级流程数据", response_model=Schemas.GetRateFlowByIdRes) def func(req: Schemas.GetRateFlowByIdReq, token: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): rate_flow_data = db.query(RateFlow).filter(RateFlow.id == req.id).first() nodes = Crud.get_rate_flow_all_nodes(RateFlow.id, db, mongodb, with_content=True) rate_flow_data.nodes = nodes return rate_flow_data @router.post("/get_rate_flow_by_company_user", summary="获取评级列表", response_model=Schemas.GetRateFlowByCompanyUserRes) def func(token: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): items = [item for item in db.query(RateFlow).filter(RateFlow.company_name == token.company_name)] return items @router.post("/rate_form_save", summary="表单填报", tags=['评级节点']) def func(req: Schemas.RateFormSaveReq, token: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): node = db.query(RateFlowNode).filter( RateFlowNode.rate_process_id == req.rate_flow_id and RateFlowNode.node_name == '表单填报').first() Crud.save_rate_flow_node(node.id, req.data, db, mongodb) Crud.change_rate_node_status(db, node.id, "完成") # todo:表单解析 return {"message": "保存成功", "code": 200} # 管理端接口 @router.post("/load_api_data", summary="三方数据录入", tags=['评级节点']) def func(req: Schemas.LoadApiDataReq, token: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): node = db.query(RateFlowNode).filter( RateFlowNode.rate_process_id == req.rate_flow_id and RateFlowNode.node_name == '三方数据录入').first() # todo: 三方数据录入 data = {} Crud.save_rate_flow_node(node.id, data, db, mongodb) Crud.change_rate_node_status(db, node.id, "完成") return {"message": "保存成功", "code": 200} # 管理端接口 @router.post("/save_man_data", summary="后台审核校正", tags=['评级节点']) def func(req: Schemas.SaveManDataReq, token: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): node = db.query(RateFlowNode).filter( RateFlowNode.rate_process_id == req.rate_flow_id and RateFlowNode.node_name == '后台审核校正').first() # todo: 三方数据录入 data = {} Crud.save_rate_flow_node(node.id, data, db, mongodb) Crud.change_rate_node_status(db, node.id, "完成") return {"message": "保存成功", "code": 200} @router.post("/do_rate", summary="评级", tags=['评级节点']) def func(req: Schemas.DoRateReq, token: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend), db: Session = Depends(common_db.get_db), mongodb: MongoConnect = Depends(mg_db.get_db)): node = db.query(RateFlowNode).filter( RateFlowNode.rate_process_id == req.rate_flow_id and RateFlowNode.node_name == '评级').first() # todo: 进行评级 data = {} Crud.save_rate_flow_node(node.id, data, db, mongodb) Crud.change_rate_node_status(db, node.id, "完成") return {"message": "保存成功", "code": 200}