增加接单接口

This commit is contained in:
aaron 2025-01-13 18:09:11 +08:00
parent 5028e1148c
commit 2f2b54f092
2 changed files with 40 additions and 1 deletions

View File

@ -327,4 +327,41 @@ async def get_delivery_orders(
return success_response(data={
"total": total,
"items": [OrderInfo.model_validate(o) for o in orders]
})
})
@router.post("/{orderid}/accept", response_model=ResponseModel)
async def accept_order(
orderid: str,
db: Session = Depends(get_db),
deliveryman: UserDB = Depends(get_deliveryman_user)
):
"""接单(仅配送员可用)"""
# 查询订单
order = db.query(ShippingOrderDB).filter(
ShippingOrderDB.orderid == orderid
).first()
if not order:
return error_response(code=404, message="订单不存在")
# 检查订单状态
if order.status != OrderStatus.CREATED:
return error_response(code=400, message="只能接待新创建的订单")
# 检查订单是否已被接单
if order.deliveryman_user_id is not None:
return error_response(code=400, message="订单已被其他配送员接单")
try:
# 更新订单状态和配送员ID
order.status = OrderStatus.ACCEPTED
order.deliveryman_user_id = deliveryman.userid
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)}")

View File

@ -38,6 +38,7 @@ class ShippingOrderDB(Base):
nullable=False,
default=DeliveryMethod.DELIVERY_AT_DOORSTEP
)
deliveryman_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True)
class ShippingOrderPackageDB(Base):
__tablename__ = "shipping_order_packages"
@ -79,6 +80,7 @@ class OrderInfo(BaseModel):
complete_images: Optional[List[str]] = None
create_time: datetime
delivery_method: DeliveryMethod
deliveryman_user_id: Optional[int] = None
def __init__(self, **data):
super().__init__(**data)