diff --git a/app/api/endpoints/merchant_product.py b/app/api/endpoints/merchant_product.py index 76ee101..d8f6d6b 100644 --- a/app/api/endpoints/merchant_product.py +++ b/app/api/endpoints/merchant_product.py @@ -16,6 +16,9 @@ from sqlalchemy import func from sqlalchemy.orm import joinedload from app.models.merchant_product import OperationType, DeliveryType, DeliveryTimeType from app.models.merchant import MerchantInfo +from app.models.address import AddressDB, AddressInfo +from app.api.deps import get_current_user + router = APIRouter() @router.post("", response_model=ResponseModel) @@ -120,25 +123,36 @@ async def list_merchant_products( @router.get("/{product_id}", response_model=ResponseModel) async def get_product( product_id: int, - db: Session = Depends(get_db) + db: Session = Depends(get_db), + current_user: UserDB = Depends(get_current_user) ): """获取产品详情""" product = db.query(MerchantProductDB).filter( MerchantProductDB.id == product_id ).first() + if not product: + return error_response(code=404, message="产品不存在") + product_info = MerchantProductInfo.model_validate(product) merchant = MerchantInfo.model_validate(product.merchant) + result = { **product_info.model_dump(), "gift_points" : int(float(product.gift_points_rate) / 10 * float(product.sale_price)), "merchant": merchant.model_dump() } - if not product: - return error_response(code=404, message="产品不存在") + # 获取默认地址 + default_address = db.query(AddressDB).filter( + AddressDB.user_id == current_user.userid, + AddressDB.is_default == True + ).first() + + if default_address: + result["default_address"] = AddressInfo.model_validate(default_address) return success_response(data=result) diff --git a/jobs.sqlite b/jobs.sqlite index 3dbd7e7..7042328 100644 Binary files a/jobs.sqlite and b/jobs.sqlite differ