From 6b03f5e9c11415cb7e3d11a225f29c6145ca9afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B2=E8=BE=B0=E7=94=9F=E4=BA=A7?= Date: Wed, 8 Apr 2026 09:09:39 +0800 Subject: [PATCH] =?UTF-8?q?v1.2.55=20-=20=E4=BF=AE=E5=A4=8Dstats=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/routers/collections.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/app/routers/collections.py b/backend/app/routers/collections.py index b369641..4c33183 100644 --- a/backend/app/routers/collections.py +++ b/backend/app/routers/collections.py @@ -365,17 +365,22 @@ def get_stats( expected_profit = target_result - cost_result - # 已售商品统计 - sold_filter = base_filter & (Collection.f01_04_status == 'sold') & (Collection.f05_42_goal_price > 0) + # 已售商品统计 - 处理管理员和普通用户两种情况 + if current_user.role == "admin": + sold_filter = (Collection.f01_04_status == 'sold') & (Collection.f05_42_goal_price > 0) + else: + sold_filter = (Collection.f99_91_user_id == current_user.f99_90_id) & (Collection.f01_04_status == 'sold') & (Collection.f05_42_goal_price > 0) total_revenue = db.query(func.sum(Collection.f05_42_goal_price)).filter(sold_filter).scalar() or 0 + from sqlalchemy import case total_profit = db.query( func.sum( - (Collection.f05_42_goal_price or 0) - - (Collection.f05_40_cost_price or 0) - - (Collection.f05_43_repair_fee or 0) - - (Collection.f05_44_grading_fee or 0) + case( + (Collection.f05_42_goal_price.isnot(None), + Collection.f05_42_goal_price - func.coalesce(Collection.f05_40_cost_price, 0) - func.coalesce(Collection.f05_43_repair_fee, 0) - func.coalesce(Collection.f05_44_grading_fee, 0)), + else_=0 + ) ) ).filter(sold_filter).scalar() or 0