订单详情返回配送信息
This commit is contained in:
parent
16f5fcf9d6
commit
1d10986d93
@ -16,12 +16,15 @@ from app.models.order import (
|
||||
)
|
||||
from app.models.database import get_db
|
||||
from app.api.deps import get_current_user, get_deliveryman_user
|
||||
from app.models.user import UserDB
|
||||
from app.models.user import UserDB,UserRole
|
||||
from app.core.response import success_response, error_response, ResponseModel
|
||||
from app.models.coupon import UserCouponDB, CouponStatus
|
||||
from datetime import datetime, timezone
|
||||
from app.core.config import settings
|
||||
from app.models.address import AddressDB
|
||||
from sqlalchemy.orm import joinedload
|
||||
from app.models.community import CommunityDB
|
||||
from app.models.community_building import CommunityBuildingDB
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -112,28 +115,70 @@ async def create_shipping_order(
|
||||
return error_response(code=500, message=f"订单创建失败: {str(e)}")
|
||||
|
||||
@router.get("/{orderid}", response_model=ResponseModel)
|
||||
async def get_order(
|
||||
async def get_order_detail(
|
||||
orderid: str,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
):
|
||||
"""获取订单详情"""
|
||||
# 查询订单
|
||||
order = db.query(ShippingOrderDB).filter(
|
||||
ShippingOrderDB.orderid == orderid,
|
||||
ShippingOrderDB.userid == current_user.userid
|
||||
# 使用 join 查询获取订单和相关地址信息
|
||||
order = db.query(
|
||||
ShippingOrderDB,
|
||||
AddressDB.name.label('address_name'),
|
||||
AddressDB.phone.label('address_phone'),
|
||||
AddressDB.address_detail.label('address_detail'),
|
||||
CommunityBuildingDB.building_name.label('building_name'),
|
||||
CommunityDB.name.label('community_name')
|
||||
).join(
|
||||
AddressDB,
|
||||
ShippingOrderDB.addressid == AddressDB.id
|
||||
).join(
|
||||
CommunityBuildingDB,
|
||||
AddressDB.community_building_id == CommunityBuildingDB.id
|
||||
).join(
|
||||
CommunityDB,
|
||||
CommunityBuildingDB.community_id == CommunityDB.id
|
||||
).filter(
|
||||
ShippingOrderDB.orderid == orderid
|
||||
).first()
|
||||
|
||||
if not order:
|
||||
return error_response(code=404, message="订单不存在")
|
||||
|
||||
# 检查权限
|
||||
if order.ShippingOrderDB.userid != current_user.userid and UserRole.ADMIN not in current_user.roles:
|
||||
return error_response(code=403, message="无权查看此订单")
|
||||
|
||||
# 查询包裹信息
|
||||
packages = db.query(ShippingOrderPackageDB).filter(
|
||||
ShippingOrderPackageDB.orderid == orderid
|
||||
).all()
|
||||
|
||||
# 构建响应数据
|
||||
order_data = {
|
||||
"orderid": order.ShippingOrderDB.orderid,
|
||||
"userid": order.ShippingOrderDB.userid,
|
||||
"addressid": order.ShippingOrderDB.addressid,
|
||||
"package_count": order.ShippingOrderDB.package_count,
|
||||
"original_amount": order.ShippingOrderDB.original_amount,
|
||||
"coupon_discount_amount": order.ShippingOrderDB.coupon_discount_amount,
|
||||
"coupon_id": order.ShippingOrderDB.coupon_id,
|
||||
"final_amount": order.ShippingOrderDB.final_amount,
|
||||
"status": order.ShippingOrderDB.status,
|
||||
"complete_images": order.ShippingOrderDB.complete_images.split(",") if order.ShippingOrderDB.complete_images else None,
|
||||
"create_time": order.ShippingOrderDB.create_time,
|
||||
"delivery_method": order.ShippingOrderDB.delivery_method,
|
||||
"deliveryman_user_id": order.ShippingOrderDB.deliveryman_user_id,
|
||||
# 地址相关信息
|
||||
"address_name": order.address_name,
|
||||
"address_phone": order.address_phone,
|
||||
"address_detail": order.address_detail,
|
||||
"building_name": order.building_name,
|
||||
"community_name": order.community_name
|
||||
}
|
||||
|
||||
return success_response(data={
|
||||
"order": OrderInfo.model_validate(order),
|
||||
"order": order_data,
|
||||
"packages": [OrderPackageInfo.model_validate(p) for p in packages]
|
||||
})
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user