From f3cfdb9fec6511c81b5d23d5e4dc2b915084f2a0 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Fri, 28 Mar 2025 09:06:20 +0800 Subject: [PATCH] update --- app/api/endpoints/dashboard.py | 61 +++++++++++++++++++++++++++++++++ jobs.sqlite | Bin 24576 -> 24576 bytes 2 files changed, 61 insertions(+) diff --git a/app/api/endpoints/dashboard.py b/app/api/endpoints/dashboard.py index e696b7c..78736b5 100644 --- a/app/api/endpoints/dashboard.py +++ b/app/api/endpoints/dashboard.py @@ -9,6 +9,8 @@ from datetime import datetime, timedelta from app.core.response import success_response, error_response, ResponseModel from typing import Optional from app.models.user_auth import UserAuthDB +from app.models.statistics import DailyCommunityOrderStats, DailyOrderStats + router = APIRouter() # 获取基础信息 @@ -37,6 +39,7 @@ async def get_dashboard_info( yesterday_user_count = len([user for user in users if user.create_time.date() == datetime.now().date() - timedelta(days=1)]) # 查询已下单用户数 + orders = db.query(ShippingOrderDB).filter(ShippingOrderDB.status != OrderStatus.CANCELLED).all() has_order_user_count = len(set([order.userid for order in orders])) has_order_completed_user_count = len(set([order.userid for order in orders if order.status == OrderStatus.COMPLETED or order.status == OrderStatus.UNPAID])) @@ -93,6 +96,64 @@ async def get_dashboard_info( "yesterday_order_amount": yesterday_order_amount }) +@router.get("/order_stats") +async def get_order_stats( + limit: int = 10, + skip: int = 0, + db: Session = Depends(get_db) +): + # 获取今日订单量 + query = db.query(DailyOrderStats).order_by(DailyOrderStats.stats_date.desc()).offset(skip).limit(limit) + total = query.count() + items = query.all() + + result = [] + for item in items: + result.append({ + "stats_date": item.stats_date, + "total_order_count": item.total_order_count, + "total_original_amount": item.total_original_amount, + "total_final_amount": item.total_final_amount, + "total_communities": item.total_communities + }) + + return success_response(data={ + "items": result, + "total": total + }) + +@router.get("/community_stats") +async def get_community_stats( + community_id: Optional[int] = None, + limit: int = 10, + skip: int = 0, + db: Session = Depends(get_db) +): + # 获取今日订单量 + query = db.query(DailyCommunityOrderStats).order_by(DailyCommunityOrderStats.stats_date.desc()).offset(skip).limit(limit) + total = query.count() + + if community_id: + query = query.filter(DailyCommunityOrderStats.community_id == community_id) + items = query.all() + + result = [] + for item in items: + result.append({ + "community_id": item.community_id, + "community_name": item.community_name, + "order_count": item.order_count, + "total_original_amount": item.total_original_amount, + "total_final_amount": item.total_final_amount, + "stats_date": item.stats_date + }) + + return success_response(data={ + "items": result, + "total": total + }) + + @router.get("/deliveryman") async def get_deliveryman_dashboard_info( community_id: Optional[int] = None, diff --git a/jobs.sqlite b/jobs.sqlite index f6fa6110fef9daf214b2d49c46a2613bf02fcb07..6b1a77f8413a89e5e58d7f7bc681b50be1325ba6 100644 GIT binary patch delta 82 zcmZoTz}Rqrae_2s=R_H2#?Fli`9jRkPTtsT>n_W@`MszyBctqQW$|7X_Gjlh8d#?~ jO?Gsb*?d`AmIWyOQJzVG2Pn?W!OX$}4Co>2h+;`<&V delta 82 zcmZoTz}Rqrae_2s<3t%}#>R~a`9jQ3D