From a0e7309b697344294a61e55518a40f1d33a02096 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Fri, 17 Jan 2025 11:29:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=20=E5=B7=B2=E5=8F=96?= =?UTF-8?q?=E8=B4=A7=20=E7=9A=84=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/order.py | 45 +++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index a7896c9..4ad2263 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -378,7 +378,7 @@ async def cancel_order( return error_response(code=404, message="订单不存在") # 检查订单状态是否可取消 - if order.status not in [OrderStatus.CREATED, OrderStatus.ACCEPTED]: + if order.status not in [OrderStatus.CREATED, OrderStatus.RECEIVED]: return error_response(code=400, message="当前订单状态不可取消") try: @@ -422,7 +422,7 @@ async def complete_order( return error_response(code=404, message="订单不存在") # 检查订单状态 - if order.status != OrderStatus.ACCEPTED: + if order.status != OrderStatus.RECEIVED: return error_response(code=400, message="只有已接单的订单才能标记为完成") try: @@ -441,8 +441,8 @@ async def complete_order( return error_response(code=500, message=f"完成订单失败: {str(e)}") -@router.post("/{orderid}/accept", response_model=ResponseModel) -async def accept_order( +@router.post("/{orderid}/receive", response_model=ResponseModel) +async def receive_order( orderid: str, db: Session = Depends(get_db), deliveryman: UserDB = Depends(get_deliveryman_user) @@ -466,7 +466,7 @@ async def accept_order( try: # 更新订单状态和配送员ID - order.status = OrderStatus.ACCEPTED + order.status = OrderStatus.RECEIVED order.deliveryman_user_id = deliveryman.userid db.commit() @@ -476,4 +476,37 @@ async def accept_order( ) except Exception as e: db.rollback() - return error_response(code=500, message=f"接单失败: {str(e)}") \ No newline at end of file + return error_response(code=500, message=f"接单失败: {str(e)}") + +@router.post("/{orderid}/pickup", response_model=ResponseModel) +async def pickup_order( + orderid: str, + db: Session = Depends(get_db), + deliveryman: UserDB = Depends(get_deliveryman_user) +): + """标记订单为已取货(仅配送员可用)""" + # 查询订单 + order = db.query(ShippingOrderDB).filter( + ShippingOrderDB.orderid == orderid, + ShippingOrderDB.deliveryman_user_id == deliveryman.userid # 必须是该配送员的订单 + ).first() + + if not order: + return error_response(code=404, message="订单不存在") + + # 检查订单状态 + if order.status != OrderStatus.RECEIVED: + return error_response(code=400, message="只有已接单的订单才能标记为已取货") + + try: + # 更新订单状态为配送中 + order.status = OrderStatus.DELIVERING + + db.commit() + return success_response( + message="已标记为取货", + data=OrderInfo.model_validate(order) + ) + except Exception as e: + db.rollback() + return error_response(code=500, message=f"操作失败: {str(e)}") \ No newline at end of file