update
This commit is contained in:
parent
1cc356bf9a
commit
292392b4a2
@ -59,7 +59,6 @@ async def get_community_qrcode(
|
||||
"community": CommunityInfo.model_validate(community),
|
||||
"show_qrcode": show_qrcode
|
||||
})
|
||||
|
||||
|
||||
@router.get("", response_model=ResponseModel)
|
||||
async def get_communities(
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
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.user import UserDB, UserRole
|
||||
from app.models.order import ShippingOrderDB, OrderStatus
|
||||
from app.models.community import CommunityDB
|
||||
from app.models.community import CommunityDB, CommunityStatus
|
||||
from sqlalchemy.orm import Session
|
||||
from datetime import datetime, timedelta
|
||||
from app.core.response import success_response, error_response, ResponseModel
|
||||
from typing import Optional
|
||||
router = APIRouter()
|
||||
|
||||
# 获取基础信息
|
||||
@ -21,41 +22,60 @@ async def get_dashboard_info(
|
||||
# 总用户数, 今日新增用户数,昨日新增用户数, 总配送订单数, 今日新增配送订单数,昨日新增配送订单数
|
||||
# 小区数量, 今日新增小区数,昨日新增小区数
|
||||
|
||||
# 小区数量
|
||||
total_community_count = db.query(CommunityDB).filter(CommunityDB.status == CommunityStatus.OPENING).count()
|
||||
|
||||
# 总用户数
|
||||
total_user_count = db.query(UserDB).count()
|
||||
|
||||
# 今日新增用户数
|
||||
today_user_count = db.query(UserDB).filter(UserDB.create_time >= datetime.now().date()).count()
|
||||
# 查询已下单用户数
|
||||
orders = db.query(ShippingOrderDB).filter(ShippingOrderDB.status.in_(['COMPLETED', 'UNPAID'])).all()
|
||||
has_order_user_count = len(set([order.userid for order in orders]))
|
||||
has_paid_user_count = len(set([order.userid for order in orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0]))
|
||||
order_count = len(orders)
|
||||
order_pay_count = len([order for order in orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0])
|
||||
pay_rate = order_pay_count / order_count if order_count > 0 else 0
|
||||
order_amount = sum([order.original_amount_with_additional_fee for order in orders])
|
||||
pay_amount = sum([order.final_amount for order in orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0])
|
||||
|
||||
# 昨日新增用户数
|
||||
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.completed_time >= datetime.now().date() - timedelta(days=1), ShippingOrderDB.status == OrderStatus.COMPLETED).count()
|
||||
|
||||
# 今日配送订单数
|
||||
today_order_count = db.query(ShippingOrderDB).filter(ShippingOrderDB.completed_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,
|
||||
})
|
||||
"total_user_count": total_user_count,
|
||||
"has_order_user_count": has_order_user_count,
|
||||
"has_paid_user_count": has_paid_user_count,
|
||||
"order_count": order_count,
|
||||
"order_pay_count": order_pay_count,
|
||||
"pay_rate": pay_rate,
|
||||
"order_amount": order_amount,
|
||||
"pay_amount": pay_amount
|
||||
})
|
||||
|
||||
@router.get("/deliveryman")
|
||||
async def get_deliveryman_dashboard_info(
|
||||
community_id: Optional[int] = None,
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
# 获取配送员信息
|
||||
query = db.query(UserDB).filter(UserDB.roles.contains(UserRole.DELIVERYMAN))
|
||||
if community_id:
|
||||
query = query.filter(UserDB.community_id == community_id)
|
||||
deliverymans = query.all()
|
||||
|
||||
result = []
|
||||
for deliveryman in deliverymans:
|
||||
orders = db.query(ShippingOrderDB).filter(ShippingOrderDB.deliveryman_user_id == deliveryman.userid, ShippingOrderDB.status.in_([OrderStatus.COMPLETED, OrderStatus.UNPAID])).all()
|
||||
today_orders = db.query(ShippingOrderDB).filter(ShippingOrderDB.deliveryman_user_id == deliveryman.userid, ShippingOrderDB.status.in_([OrderStatus.COMPLETED, OrderStatus.UNPAID]), ShippingOrderDB.completed_time >= datetime.now().date()).all()
|
||||
result.append({
|
||||
"deliveryman_id": deliveryman.userid,
|
||||
"deliveryman_name": deliveryman.nickname,
|
||||
"deliveryman_community_name": deliveryman.community.name,
|
||||
"order_count": len(orders),
|
||||
"order_amount": sum([order.original_amount_with_additional_fee for order in orders]),
|
||||
"today_order_count": len(today_orders),
|
||||
"today_order_amount": sum([order.original_amount_with_additional_fee for order in today_orders])
|
||||
})
|
||||
|
||||
# 按照今日订单量排序
|
||||
result.sort(key=lambda x: x["today_order_count"], reverse=True)
|
||||
return success_response(data=result)
|
||||
BIN
jobs.sqlite
BIN
jobs.sqlite
Binary file not shown.
Loading…
Reference in New Issue
Block a user