diff --git a/app/api/endpoints/dashboard.py b/app/api/endpoints/dashboard.py index 78736b5..500907e 100644 --- a/app/api/endpoints/dashboard.py +++ b/app/api/endpoints/dashboard.py @@ -39,39 +39,40 @@ 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)]) # 查询已下单用户数 + all_orders = db.query(ShippingOrderDB).all() + completed_orders = [order for order in all_orders if order.status == OrderStatus.COMPLETED or order.status == OrderStatus.UNPAID] + + has_order_user_count = len(set([order.userid for order in all_orders if order.status != OrderStatus.CANCELLED])) + has_order_completed_user_count = len(set([order.userid for order in completed_orders if order.status == OrderStatus.COMPLETED or order.status == OrderStatus.UNPAID])) + has_paid_user_count = len(set([order.userid for order in completed_orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0])) - 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])) - 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_count = len(completed_orders) # 今日新增配送订单数 - today_order_count = len([order for order in orders if order.create_time.date() == datetime.now().date()]) + today_order_count = len([order for order in completed_orders if order.completed_time.date() == datetime.now().date()]) # 昨日新增配送订单数 - yesterday_order_count = len([order for order in orders if order.create_time.date() == datetime.now().date() - timedelta(days=1)]) + yesterday_order_count = len([order for order in completed_orders if order.completed_time.date() == datetime.now().date() - timedelta(days=1)]) - order_completed_count = len([order for order in orders if order.status == OrderStatus.COMPLETED or order.status == OrderStatus.UNPAID]) + order_completed_count = len(completed_orders) #需要支付的订单数量 - need_pay_order_count = len([order for order in orders if order.final_amount > 0]) - order_unpaid_count = len([order for order in orders if order.status == OrderStatus.UNPAID]) - order_pay_count = len([order for order in orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0]) + need_pay_order_count = len([order for order in completed_orders if order.final_amount > 0]) + order_unpaid_count = len([order for order in completed_orders if order.status == OrderStatus.UNPAID and order.final_amount > 0]) + order_pay_count = len([order for order in completed_orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0]) pay_rate = order_unpaid_count / need_pay_order_count if need_pay_order_count > 0 else 0 # 已支付的订单数量 - order_amount = sum([order.original_amount_with_additional_fee for order in orders if order.status != OrderStatus.CANCELLED]) - completed_order_amount = sum([order.original_amount_with_additional_fee for order in orders if order.status == OrderStatus.COMPLETED]) - pay_amount = sum([order.final_amount for order in orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0]) - unpaid_amount = sum([order.original_amount_with_additional_fee for order in orders if order.status == OrderStatus.UNPAID]) + order_amount = sum([order.original_amount_with_additional_fee for order in completed_orders]) + completed_order_amount = sum([order.original_amount_with_additional_fee for order in completed_orders if order.status == OrderStatus.COMPLETED]) + pay_amount = sum([order.final_amount for order in completed_orders if order.status == OrderStatus.COMPLETED and order.final_amount > 0]) + unpaid_amount = sum([order.original_amount_with_additional_fee for order in completed_orders if order.status == OrderStatus.UNPAID]) # 今日订单金额 - today_order_amount = sum([order.original_amount_with_additional_fee for order in orders if order.create_time.date() == datetime.now().date()]) + today_order_amount = sum([order.original_amount_with_additional_fee for order in completed_orders if order.completed_time.date() == datetime.now().date()]) # 昨日订单金额 - yesterday_order_amount = sum([order.original_amount_with_additional_fee for order in orders if order.create_time.date() == datetime.now().date() - timedelta(days=1)]) + yesterday_order_amount = sum([order.original_amount_with_additional_fee for order in completed_orders if order.completed_time.date() == datetime.now().date() - timedelta(days=1)]) return success_response(data={ "total_community_count": total_community_count, @@ -80,6 +81,7 @@ async def get_dashboard_info( "has_order_completed_user_count": has_order_completed_user_count, "has_paid_user_count": has_paid_user_count, "order_count": order_count, + "need_pay_order_count": need_pay_order_count, "order_completed_count": order_completed_count, "order_pay_count": order_pay_count, "order_unpaid_count": order_unpaid_count, diff --git a/jobs.sqlite b/jobs.sqlite index 6b1a77f..92495cb 100644 Binary files a/jobs.sqlite and b/jobs.sqlite differ