daily/Mods/Finance/Router.py

61 lines
2.4 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Utils.SqlAlchemyUtils import get_db, Base
from . import Schemas
from . import Crud
from Utils.SqlAlchemyUtils import QueryParams, query_common
from .Models import Finance
router = APIRouter(tags=["财务数据"])
@router.post("/finance/add", summary="添加财务数据", response_model=Schemas.FinanceAddRes)
def finance_add(req: Schemas.FinanceAddReq, db: Session = Depends(get_db)):
item = Crud.finance_add(db, req)
return Schemas.FinanceAddRes(**item.to_dict())
@router.post("/finance/delete", summary="删除财务数据")
def finance_delete(req: Schemas.FinanceDeleteReq, db: Session = Depends(get_db)):
Crud.finance_delete(db, req.id)
return "删除成功"
@router.post("/finance/update", summary="更新财务数据", response_model=Schemas.FinanceUpdateRes)
def finance_update(req: Schemas.FinanceUpdateReq, db: Session = Depends(get_db)):
item = Crud.finance_update(db, req)
return Schemas.FinanceUpdateRes(**item.to_dict())
@router.post("/finance/get", summary="获取财务数据", response_model=Schemas.FinanceGetRes)
def finance_get(req: Schemas.FinanceGetReq, db: Session = Depends(get_db)):
item = Crud.finance_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
finance_info = item[0].to_dict()
finance_info['user_info'] = item[1].to_dict()
return Schemas.FinanceGetRes(**finance_info)
@router.post("/finance/query", summary="查询财务数据", response_model=Schemas.FinanceQueryRes)
def finance_query(req: Schemas.FinanceQueryReq, db: Session = Depends(get_db)):
count, query,total = Crud.finance_query(db, req)
items = []
for item in query:
finance_info = item[0].to_dict()
finance_info['user_info'] = item[1].to_dict()
items.append(Schemas.FinanceInfo(**finance_info))
print(total,"total")
return Schemas.FinanceQueryRes(count=count, items=items,total=total)
@router.post("/finance/query_common", summary="通用查询财务数据",
response_model=Schemas.FinanceQueryRes)
def finance_query_common(req: QueryParams, db: Session = Depends(get_db)):
count, query = query_common(db, Finance, req)
items = [Schemas.FinanceInfo(**item.to_dict()) for item in query]
return Schemas.FinanceQueryRes(count=count, items=items)
#########