From c7f76ed1e63a55fe071bc99611ea575525521946 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Fri, 24 Jan 2025 13:50:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9C=B0=E5=9D=80=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/address.py | 25 +++++++++++++++++++++---- app/models/address.py | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/api/endpoints/address.py b/app/api/endpoints/address.py index 6d2545c..189122d 100644 --- a/app/api/endpoints/address.py +++ b/app/api/endpoints/address.py @@ -1,8 +1,9 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from sqlalchemy import and_ -from typing import List +from typing import List, Optional from app.models.address import AddressDB, AddressCreate, AddressUpdate, AddressInfo +from app.models.community import CommunityDB from app.models.database import get_db from app.api.deps import get_current_user from app.models.user import UserDB @@ -36,14 +37,30 @@ async def create_address( @router.get("/", response_model=ResponseModel) async def get_addresses( + community_id: Optional[int] = None, db: Session = Depends(get_db), current_user: UserDB = Depends(get_current_user) ): """获取用户的所有配送地址""" - addresses = db.query(AddressDB).filter( + addresses = db.query( + AddressDB, + CommunityDB.name.label('community_name') + ).join( + CommunityDB, + AddressDB.community_id == CommunityDB.id + ).filter( AddressDB.user_id == current_user.userid - ).all() - return success_response(data=[AddressInfo.model_validate(a) for a in addresses]) + ) + + if community_id is not None: + addresses = addresses.filter(AddressDB.community_id == community_id) + + addresses = addresses.all() + + return success_response(data=[{ + **AddressInfo.model_validate(a[0]).model_dump(), + "community_name": a[1] + } for a in addresses]) @router.put("/{address_id}", response_model=ResponseModel) async def update_address( diff --git a/app/models/address.py b/app/models/address.py index a934b1d..bff59b7 100644 --- a/app/models/address.py +++ b/app/models/address.py @@ -46,6 +46,7 @@ class AddressUpdate(BaseModel): class AddressInfo(BaseModel): id: int community_id: int + community_name: Optional[str] = None community_building_id: Optional[int] community_building_name: Optional[str] address_detail: str