rate-sys-template/Mods/RateFlow/Router.py

98 lines
4.7 KiB
Python

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}