完善订单详情接口返回
增加取消订单 uid 记录。
This commit is contained in:
parent
1d10986d93
commit
6b6354000f
@ -25,6 +25,7 @@ from app.models.address import AddressDB
|
|||||||
from sqlalchemy.orm import joinedload
|
from sqlalchemy.orm import joinedload
|
||||||
from app.models.community import CommunityDB
|
from app.models.community import CommunityDB
|
||||||
from app.models.community_building import CommunityBuildingDB
|
from app.models.community_building import CommunityBuildingDB
|
||||||
|
from app.models.station import StationDB
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@ -149,8 +150,14 @@ async def get_order_detail(
|
|||||||
if order.ShippingOrderDB.userid != current_user.userid and UserRole.ADMIN not in current_user.roles:
|
if order.ShippingOrderDB.userid != current_user.userid and UserRole.ADMIN not in current_user.roles:
|
||||||
return error_response(code=403, message="无权查看此订单")
|
return error_response(code=403, message="无权查看此订单")
|
||||||
|
|
||||||
# 查询包裹信息
|
# 查询包裹信息,包含驿站名称
|
||||||
packages = db.query(ShippingOrderPackageDB).filter(
|
packages = db.query(
|
||||||
|
ShippingOrderPackageDB,
|
||||||
|
StationDB.name.label('station_name')
|
||||||
|
).join(
|
||||||
|
StationDB,
|
||||||
|
ShippingOrderPackageDB.station_id == StationDB.id
|
||||||
|
).filter(
|
||||||
ShippingOrderPackageDB.orderid == orderid
|
ShippingOrderPackageDB.orderid == orderid
|
||||||
).all()
|
).all()
|
||||||
|
|
||||||
@ -177,9 +184,19 @@ async def get_order_detail(
|
|||||||
"community_name": order.community_name
|
"community_name": order.community_name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 构建包裹信息,包含驿站名称
|
||||||
|
package_list = [{
|
||||||
|
"id": p.ShippingOrderPackageDB.id,
|
||||||
|
"orderid": p.ShippingOrderPackageDB.orderid,
|
||||||
|
"station_id": p.ShippingOrderPackageDB.station_id,
|
||||||
|
"station_name": p.station_name,
|
||||||
|
"pickup_codes": p.ShippingOrderPackageDB.pickup_codes,
|
||||||
|
"create_time": p.ShippingOrderPackageDB.create_time
|
||||||
|
} for p in packages]
|
||||||
|
|
||||||
return success_response(data={
|
return success_response(data={
|
||||||
"order": order_data,
|
"order": order_data,
|
||||||
"packages": [OrderPackageInfo.model_validate(p) for p in packages]
|
"packages": package_list
|
||||||
})
|
})
|
||||||
|
|
||||||
@router.get("/", response_model=ResponseModel)
|
@router.get("/", response_model=ResponseModel)
|
||||||
@ -267,13 +284,14 @@ async def cancel_order(
|
|||||||
return error_response(code=404, message="订单不存在")
|
return error_response(code=404, message="订单不存在")
|
||||||
|
|
||||||
# 检查订单状态是否可取消
|
# 检查订单状态是否可取消
|
||||||
if order.status not in [OrderStatus.PENDING, OrderStatus.ACCEPTED]:
|
if order.status not in [OrderStatus.CREATED, OrderStatus.ACCEPTED]:
|
||||||
return error_response(code=400, message="当前订单状态不可取消")
|
return error_response(code=400, message="当前订单状态不可取消")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 更新订单状态和取消原因
|
# 更新订单状态、取消原因和取消用户
|
||||||
order.status = OrderStatus.CANCELLED
|
order.status = OrderStatus.CANCELLED
|
||||||
order.cancel_reason = cancel_data.reason
|
order.cancel_reason = cancel_data.reason
|
||||||
|
order.cancel_user_id = current_user.userid # 记录取消订单的用户ID
|
||||||
|
|
||||||
# 如果使用了优惠券,返还优惠券
|
# 如果使用了优惠券,返还优惠券
|
||||||
if order.coupon_id:
|
if order.coupon_id:
|
||||||
|
|||||||
@ -39,6 +39,7 @@ class ShippingOrderDB(Base):
|
|||||||
default=DeliveryMethod.DELIVERY_AT_DOORSTEP
|
default=DeliveryMethod.DELIVERY_AT_DOORSTEP
|
||||||
)
|
)
|
||||||
deliveryman_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True)
|
deliveryman_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True)
|
||||||
|
cancel_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True)
|
||||||
|
|
||||||
class ShippingOrderPackageDB(Base):
|
class ShippingOrderPackageDB(Base):
|
||||||
__tablename__ = "shipping_order_packages"
|
__tablename__ = "shipping_order_packages"
|
||||||
@ -81,6 +82,8 @@ class OrderInfo(BaseModel):
|
|||||||
create_time: datetime
|
create_time: datetime
|
||||||
delivery_method: DeliveryMethod
|
delivery_method: DeliveryMethod
|
||||||
deliveryman_user_id: Optional[int] = None
|
deliveryman_user_id: Optional[int] = None
|
||||||
|
cancel_reason: Optional[str] = None
|
||||||
|
cancel_user_id: Optional[int] = None
|
||||||
|
|
||||||
def __init__(self, **data):
|
def __init__(self, **data):
|
||||||
super().__init__(**data)
|
super().__init__(**data)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user