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
47 lines
1.8 KiB
from fastapi import Depends, APIRouter, status, Query, Path, HTTPException
|
|
from internal.models import *
|
|
from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists, raise_if_not_found
|
|
from dependencies import get_current_active_user
|
|
|
|
router = APIRouter(
|
|
prefix="/disburses",
|
|
tags=['支出管理']
|
|
)
|
|
# 获取列表
|
|
|
|
|
|
@router.get("/list/specificdate")
|
|
async def disburse_list(days: int):
|
|
select_query = """SELECT DATE(create_at) AS create_date, SUM(disburseprice) AS total_disburseprice
|
|
FROM disburses
|
|
WHERE DATE(create_at) >= DATE_SUB(CURDATE(), INTERVAL %s DAY) -- 一周前的日期
|
|
GROUP BY DATE(create_at)
|
|
ORDER BY create_date ASC;"""
|
|
disburse_list = fetch_all(select_query, (days-1,))
|
|
return response_success(disburse_list, "disburse get list success")
|
|
|
|
# 获取列表
|
|
|
|
|
|
@router.get("/list/classifieddata")
|
|
async def classified_list(days: int):
|
|
select_query = """SELECT SUM(d.disburseprice) AS value,t.typename AS name FROM disburses d
|
|
JOIN disbursetypes t ON d.typeid = t.id
|
|
WHERE d.create_at >= DATE_SUB(CURDATE(), INTERVAL %s DAY)
|
|
GROUP BY t.typename
|
|
;"""
|
|
classified_list = fetch_all(select_query, (days-1,))
|
|
return response_success(classified_list, "disburse get list success")
|
|
|
|
# 单条数据查询
|
|
|
|
|
|
@router.get("/list/search")
|
|
async def disburse_search(header: str = Query(description="支出标题")):
|
|
select_query = "SELECT id,header,text,descr FROM disburses WHERE 1=1 "
|
|
params = []
|
|
if header:
|
|
select_query += "AND header LIKE %s"
|
|
params.append(f"%{header}%")
|
|
disburse_query = fetch_all(select_query, params=params, fetchall=True)
|
|
return response_success(data=disburse_query, message="disburse search success")
|