创建 已取货 的接口。

This commit is contained in:
aaron 2025-01-17 11:29:38 +08:00
parent 39362f2bc8
commit a0e7309b69

View File

@ -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)}")
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)}")