增加商家订单的返回结果。
This commit is contained in:
parent
2223873a82
commit
3bc27ea65d
@ -11,10 +11,11 @@ from app.models.merchant_order import (
|
|||||||
)
|
)
|
||||||
from app.models.merchant_product import MerchantProductDB
|
from app.models.merchant_product import MerchantProductDB
|
||||||
from app.models.database import get_db
|
from app.models.database import get_db
|
||||||
from app.api.deps import get_current_user
|
from app.api.deps import get_current_user, get_admin_user
|
||||||
from app.models.user import UserDB
|
from app.models.user import UserDB
|
||||||
from app.core.response import success_response, error_response, ResponseModel
|
from app.core.response import success_response, error_response, ResponseModel
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
from app.models.merchant import MerchantDB
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@ -71,15 +72,50 @@ async def get_user_orders(
|
|||||||
current_user: UserDB = Depends(get_current_user)
|
current_user: UserDB = Depends(get_current_user)
|
||||||
):
|
):
|
||||||
"""获取用户的订单列表"""
|
"""获取用户的订单列表"""
|
||||||
orders = db.query(MerchantOrderDB).filter(
|
orders = db.query(
|
||||||
|
MerchantOrderDB,
|
||||||
|
MerchantProductDB.name.label('product_name'),
|
||||||
|
MerchantProductDB.image_url.label('product_image'),
|
||||||
|
MerchantDB.name.label('merchant_name'),
|
||||||
|
MerchantDB.latitude.label('merchant_latitude'),
|
||||||
|
MerchantDB.longitude.label('merchant_longitude'),
|
||||||
|
MerchantDB.phone.label('merchant_phone')
|
||||||
|
).join(
|
||||||
|
MerchantProductDB,
|
||||||
|
MerchantOrderDB.merchant_product_id == MerchantProductDB.id
|
||||||
|
).join(
|
||||||
|
MerchantDB,
|
||||||
|
MerchantProductDB.merchant_id == MerchantDB.id
|
||||||
|
).filter(
|
||||||
MerchantOrderDB.user_id == current_user.userid
|
MerchantOrderDB.user_id == current_user.userid
|
||||||
).order_by(
|
).order_by(
|
||||||
MerchantOrderDB.create_time.desc()
|
MerchantOrderDB.create_time.desc()
|
||||||
).offset(skip).limit(limit).all()
|
).offset(skip).limit(limit).all()
|
||||||
|
|
||||||
return success_response(data=[
|
# 构建返回数据
|
||||||
MerchantOrderInfo.model_validate(o) for o in orders
|
order_list = [{
|
||||||
])
|
"id": order.MerchantOrderDB.id,
|
||||||
|
"order_id": order.MerchantOrderDB.order_id,
|
||||||
|
"user_id": order.MerchantOrderDB.user_id,
|
||||||
|
"merchant_product_id": order.MerchantOrderDB.merchant_product_id,
|
||||||
|
"order_amount": order.MerchantOrderDB.order_amount,
|
||||||
|
"status": order.MerchantOrderDB.status,
|
||||||
|
"order_verify_code": order.MerchantOrderDB.order_verify_code,
|
||||||
|
"verify_time": order.MerchantOrderDB.verify_time,
|
||||||
|
"verify_user_id": order.MerchantOrderDB.verify_user_id,
|
||||||
|
"create_time": order.MerchantOrderDB.create_time,
|
||||||
|
"update_time": order.MerchantOrderDB.update_time,
|
||||||
|
# 商品信息
|
||||||
|
"product_name": order.product_name,
|
||||||
|
"product_image": order.product_image,
|
||||||
|
# 商家信息
|
||||||
|
"merchant_name": order.merchant_name,
|
||||||
|
"merchant_latitude": order.merchant_latitude,
|
||||||
|
"merchant_longitude": order.merchant_longitude,
|
||||||
|
"merchant_phone": order.merchant_phone
|
||||||
|
} for order in orders]
|
||||||
|
|
||||||
|
return success_response(data=order_list)
|
||||||
|
|
||||||
@router.post("/{order_id}/verify", response_model=ResponseModel)
|
@router.post("/{order_id}/verify", response_model=ResponseModel)
|
||||||
async def verify_order(
|
async def verify_order(
|
||||||
@ -174,7 +210,7 @@ async def apply_refund(
|
|||||||
async def confirm_refund(
|
async def confirm_refund(
|
||||||
order_id: str,
|
order_id: str,
|
||||||
db: Session = Depends(get_db),
|
db: Session = Depends(get_db),
|
||||||
current_user: UserDB = Depends(get_current_user)
|
current_user: UserDB = Depends(get_admin_user)
|
||||||
):
|
):
|
||||||
"""确认退款(管理员)"""
|
"""确认退款(管理员)"""
|
||||||
order = db.query(MerchantOrderDB).filter(
|
order = db.query(MerchantOrderDB).filter(
|
||||||
@ -197,3 +233,60 @@ async def confirm_refund(
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
return error_response(code=500, message=f"确认退款失败: {str(e)}")
|
return error_response(code=500, message=f"确认退款失败: {str(e)}")
|
||||||
|
|
||||||
|
@router.get("/{order_id}", response_model=ResponseModel)
|
||||||
|
async def get_order_detail(
|
||||||
|
order_id: str,
|
||||||
|
db: Session = Depends(get_db),
|
||||||
|
current_user: UserDB = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""获取订单详情"""
|
||||||
|
order = db.query(
|
||||||
|
MerchantOrderDB,
|
||||||
|
MerchantProductDB.name.label('product_name'),
|
||||||
|
MerchantProductDB.image_url.label('product_image'),
|
||||||
|
MerchantDB.name.label('merchant_name'),
|
||||||
|
MerchantDB.latitude.label('merchant_latitude'),
|
||||||
|
MerchantDB.longitude.label('merchant_longitude'),
|
||||||
|
MerchantDB.phone.label('merchant_phone')
|
||||||
|
).join(
|
||||||
|
MerchantProductDB,
|
||||||
|
MerchantOrderDB.merchant_product_id == MerchantProductDB.id
|
||||||
|
).join(
|
||||||
|
MerchantDB,
|
||||||
|
MerchantProductDB.merchant_id == MerchantDB.id
|
||||||
|
).filter(
|
||||||
|
MerchantOrderDB.order_id == order_id
|
||||||
|
).first()
|
||||||
|
|
||||||
|
if not order:
|
||||||
|
return error_response(code=404, message="订单不存在")
|
||||||
|
|
||||||
|
# 检查权限
|
||||||
|
if order.MerchantOrderDB.user_id != current_user.userid:
|
||||||
|
return error_response(code=403, message="无权查看此订单")
|
||||||
|
|
||||||
|
# 构建返回数据
|
||||||
|
order_data = {
|
||||||
|
"id": order.MerchantOrderDB.id,
|
||||||
|
"order_id": order.MerchantOrderDB.order_id,
|
||||||
|
"user_id": order.MerchantOrderDB.user_id,
|
||||||
|
"merchant_product_id": order.MerchantOrderDB.merchant_product_id,
|
||||||
|
"order_amount": order.MerchantOrderDB.order_amount,
|
||||||
|
"status": order.MerchantOrderDB.status,
|
||||||
|
"order_verify_code": order.MerchantOrderDB.order_verify_code,
|
||||||
|
"verify_time": order.MerchantOrderDB.verify_time,
|
||||||
|
"verify_user_id": order.MerchantOrderDB.verify_user_id,
|
||||||
|
"create_time": order.MerchantOrderDB.create_time,
|
||||||
|
"update_time": order.MerchantOrderDB.update_time,
|
||||||
|
# 商品信息
|
||||||
|
"product_name": order.product_name,
|
||||||
|
"product_image": order.product_image,
|
||||||
|
# 商家信息
|
||||||
|
"merchant_name": order.merchant_name,
|
||||||
|
"merchant_latitude": order.merchant_latitude,
|
||||||
|
"merchant_longitude": order.merchant_longitude,
|
||||||
|
"merchant_phone": order.merchant_phone
|
||||||
|
}
|
||||||
|
|
||||||
|
return success_response(data=order_data)
|
||||||
@ -47,6 +47,12 @@ class MerchantOrderInfo(BaseModel):
|
|||||||
verify_user_id: Optional[int]
|
verify_user_id: Optional[int]
|
||||||
create_time: datetime
|
create_time: datetime
|
||||||
update_time: Optional[datetime]
|
update_time: Optional[datetime]
|
||||||
|
product_name: Optional[str] = None
|
||||||
|
product_image: Optional[str] = None
|
||||||
|
product_price: Optional[float] = None
|
||||||
|
merchant_name: Optional[str] = None
|
||||||
|
merchant_logo: Optional[str] = None
|
||||||
|
merchant_address: Optional[str] = None
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user