You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.8 KiB

8 months ago
  1. from fastapi import Depends, APIRouter, status, Query, Path, HTTPException
  2. from internal.models import *
  3. from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists, raise_if_not_found
  4. from dependencies import get_current_active_user
  5. router = APIRouter(
  6. prefix="/disburses",
  7. tags=['支出管理']
  8. )
  9. # 获取列表
  10. @router.get("/list/specificdate")
  11. async def disburse_list(days: int):
  12. select_query = """SELECT DATE(create_at) AS create_date, SUM(disburseprice) AS total_disburseprice
  13. FROM disburses
  14. WHERE DATE(create_at) >= DATE_SUB(CURDATE(), INTERVAL %s DAY) --
  15. GROUP BY DATE(create_at)
  16. ORDER BY create_date ASC;"""
  17. disburse_list = fetch_all(select_query, (days-1,))
  18. return response_success(disburse_list, "disburse get list success")
  19. # 获取列表
  20. @router.get("/list/classifieddata")
  21. async def classified_list(days: int):
  22. select_query = """SELECT SUM(d.disburseprice) AS value,t.typename AS name FROM disburses d
  23. JOIN disbursetypes t ON d.typeid = t.id
  24. WHERE d.create_at >= DATE_SUB(CURDATE(), INTERVAL %s DAY)
  25. GROUP BY t.typename
  26. ;"""
  27. classified_list = fetch_all(select_query, (days-1,))
  28. return response_success(classified_list, "disburse get list success")
  29. # 单条数据查询
  30. @router.get("/list/search")
  31. async def disburse_search(header: str = Query(description="支出标题")):
  32. select_query = "SELECT id,header,text,descr FROM disburses WHERE 1=1 "
  33. params = []
  34. if header:
  35. select_query += "AND header LIKE %s"
  36. params.append(f"%{header}%")
  37. disburse_query = fetch_all(select_query, params=params, fetchall=True)
  38. return response_success(data=disburse_query, message="disburse search success")