diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 9a29833..22abfb5 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -120,7 +120,7 @@ async def pre_order( # 检查是否有未支付的订单 unpay_order = db.query(ShippingOrderDB).filter( ShippingOrderDB.userid == current_user.userid, - ShippingOrderDB.status.not_in([OrderStatus.CANCELLED, OrderStatus.COMPLETED]) + ShippingOrderDB.status == OrderStatus.UNPAID ).first() if unpay_order: @@ -382,21 +382,36 @@ async def get_order_status_count( current_user: UserDB = Depends(get_current_user) ): """获取社区订单状态数量""" - status_order_count = db.query( + + created_count = db.query( + ShippingOrderDB.status + ).filter( + ShippingOrderDB.address_community_id == community_id, + ShippingOrderDB.status == OrderStatus.CREATED + ).count() + + + others_status_count = db.query( ShippingOrderDB.status, func.count(ShippingOrderDB.orderid) ).filter( - ShippingOrderDB.address_community_id == community_id + ShippingOrderDB.address_community_id == community_id, + ShippingOrderDB.status != OrderStatus.CREATED, + ShippingOrderDB.deliveryman_user_id == current_user.userid ).group_by( ShippingOrderDB.status ).all() - result = [] - for status, count in status_order_count: + result = [{ + "status": OrderStatus.CREATED, + "count": created_count + }] + + for status, count in others_status_count: result.append({ "status": status, "count": count - }) + }) return success_response(data=result) @@ -421,7 +436,7 @@ async def get_community_building_order_count( # 查询每个楼栋的订单数量 - building_order_count = db.query( + query = db.query( ShippingOrderDB.address_community_building_id, func.count(ShippingOrderDB.orderid) ).filter( @@ -430,11 +445,18 @@ async def get_community_building_order_count( ) ).filter( ShippingOrderDB.status.in_(status.split(",")) - ).group_by( + ) + + # 如果订单状态不是待接单,则需要过滤快递员 + if OrderStatus.CREATED not in status: + query = query.filter( + ShippingOrderDB.deliveryman_user_id == current_user.userid + ) + + building_order_count = query.group_by( ShippingOrderDB.address_community_building_id ).all() - # 没有订单的楼栋,订单数量为0 result = [] building_order_count_dict = dict(building_order_count)