From db1e2710bfafef9bedd8a97d2f6113ffd6123bb6 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sun, 23 Feb 2025 22:14:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20dashboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/dashboard.py | 58 ++++++++++++++++++++++++++++++++++ app/main.py | 3 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 app/api/endpoints/dashboard.py diff --git a/app/api/endpoints/dashboard.py b/app/api/endpoints/dashboard.py new file mode 100644 index 0000000..e8f8ab5 --- /dev/null +++ b/app/api/endpoints/dashboard.py @@ -0,0 +1,58 @@ +from fastapi import APIRouter, Depends +from app.models.database import get_db +from app.api.deps import get_admin_user +from app.models.user import UserDB +from app.models.order import ShippingOrderDB, OrderStatus +from app.models.community import CommunityDB +from sqlalchemy.orm import Session +from datetime import datetime, timedelta +from app.core.response import success_response, error_response, ResponseModel +router = APIRouter() + +# 获取基础信息 +# 总用户数, 今日新增用户数, 总配送订单数, 今日新增配送订单数 +# 小区数量, 今日新增小区数 + +@router.get("") +async def get_dashboard_info( + db: Session = Depends(get_db), + admin: UserDB = Depends(get_admin_user) +): + # 总用户数 + total_user_count = db.query(UserDB).count() + + # 今日新增用户数 + today_user_count = db.query(UserDB).filter(UserDB.create_time >= datetime.now().date()).count() + + # 昨日新增用户数 + yesterday_user_count = db.query(UserDB).filter(UserDB.create_time >= datetime.now().date() - timedelta(days=1)).count() + + # 总配送订单数 + total_order_count = db.query(ShippingOrderDB).filter(ShippingOrderDB.status == OrderStatus.COMPLETED).count() + + # 昨日订单数 + yesterday_order_count = db.query(ShippingOrderDB).filter(ShippingOrderDB.create_time >= datetime.now().date() - timedelta(days=1), ShippingOrderDB.status == OrderStatus.COMPLETED).count() + + # 今日配送订单数 + today_order_count = db.query(ShippingOrderDB).filter(ShippingOrderDB.create_time >= datetime.now().date(), ShippingOrderDB.status == OrderStatus.COMPLETED).count() + + # 小区数量 + total_community_count = db.query(CommunityDB).count() + + # 昨日新增小区数 + yesterday_community_count = db.query(CommunityDB).filter(CommunityDB.create_time >= datetime.now().date() - timedelta(days=1)).count() + + # 今日新增小区数 + today_community_count = db.query(CommunityDB).filter(CommunityDB.create_time >= datetime.now().date()).count() + + return success_response(data={ + "total_user_count": total_user_count, + "today_user_count": today_user_count, + "yesterday_user_count": yesterday_user_count, + "total_order_count": total_order_count, + "today_order_count": today_order_count, + "yesterday_order_count": yesterday_order_count, + "total_community_count": total_community_count, + "today_community_count": today_community_count, + "yesterday_community_count": yesterday_community_count, + }) \ No newline at end of file diff --git a/app/main.py b/app/main.py index b2f8a68..f134864 100644 --- a/app/main.py +++ b/app/main.py @@ -1,6 +1,6 @@ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware -from app.api.endpoints import wechat,user, address, community, station, order, coupon, community_building, upload, merchant, merchant_product, merchant_order, point, config, merchant_category, log, account,merchant_pay_order, message, bank_card, withdraw, mp, point_product, point_product_order, coupon_activity, ocr +from app.api.endpoints import wechat,user, address, community, station, order, coupon, community_building, upload, merchant, merchant_product, merchant_order, point, config, merchant_category, log, account,merchant_pay_order, message, bank_card, withdraw, mp, point_product, point_product_order, coupon_activity, ocr, dashboard from app.models.database import Base, engine from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse @@ -33,6 +33,7 @@ app.add_middleware( app.add_middleware(RequestLoggerMiddleware) # 添加用户路由 +app.include_router(dashboard.router, prefix="/api/dashboard", tags=["仪表盘"]) app.include_router(wechat.router,prefix="/api/wechat",tags=["微信"]) app.include_router(mp.router, prefix="/api/mp", tags=["微信公众号"]) app.include_router(user.router, prefix="/api/user", tags=["用户"])