From 9fb187a0cd51a6b0cc87eb4fbc2257179e21ff31 Mon Sep 17 00:00:00 2001 From: lhx Date: Mon, 15 Dec 2025 17:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E6=96=B0=E5=A2=9Ecl=5Fname?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=BA=95=E5=B1=82=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eaccount=5Fid=E7=9A=84[]=E7=B1=BB=E5=9E=8Bin?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/account.py | 3 ++- app/models/account.py | 1 + app/schemas/account.py | 6 +++++- app/services/account.py | 4 +++- app/services/base.py | 12 ++++++++++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/api/account.py b/app/api/account.py index b76fac5..68d53bb 100644 --- a/app/api/account.py +++ b/app/api/account.py @@ -52,7 +52,8 @@ def get_account(request: AccountGetRequest, db: Session = Depends(get_db)): project_name=request.project_name, status=request.status, today_updated=request.today_updated, - yh_id=request.yh_id + yh_id=request.yh_id, + cl_name=request.cl_name ) if not accounts: return AccountListResponse( diff --git a/app/models/account.py b/app/models/account.py index 0f04e9a..eab0431 100644 --- a/app/models/account.py +++ b/app/models/account.py @@ -16,6 +16,7 @@ class Account(Base): update_time = Column(String(1000), nullable=False, comment="更新时间跨度") max_variation = Column(Integer, default=1, comment="变化量的绝对值,单位是毫米") yh_id = Column(String(1000), comment="宇恒一号用户id") + cl_name = Column(String(100), nullable=True, comment="测量人员") # 模型转字典 diff --git a/app/schemas/account.py b/app/schemas/account.py index bed86f5..da1da1e 100644 --- a/app/schemas/account.py +++ b/app/schemas/account.py @@ -11,6 +11,7 @@ class AccountBase(BaseModel): update_time: Optional[str] = None max_variation: Optional[int] = None yh_id: Optional[str] = None + cl_name: Optional[str] = None class AccountCreate(AccountBase): pass @@ -22,6 +23,7 @@ class AccountUpdate(BaseModel): today_updated: Optional[int] = None project_name: Optional[str] = None update_time: Optional[str] = None + cl_name: Optional[str] = None class AccountResponse(AccountBase): account_id: int @@ -46,7 +48,8 @@ class AccountResponse(AccountBase): updated_at=account.updated_at, update_time=account.update_time, max_variation=account.max_variation, - yh_id=account.yh_id + yh_id=account.yh_id, + cl_name=account.cl_name ) class AccountListRequest(BaseModel): @@ -61,6 +64,7 @@ class AccountGetRequest(BaseModel): today_updated: Optional[int] = None update_time: Optional[str] = None yh_id: Optional[str] = None + cl_name: Optional[str] = None class AccountUpdateRequest(BaseModel): account_id: int diff --git a/app/services/account.py b/app/services/account.py index 85b4d8f..2dfa7d9 100644 --- a/app/services/account.py +++ b/app/services/account.py @@ -33,7 +33,7 @@ class AccountService: def search_accounts(db: Session, account_id: Optional[int] = None, username: Optional[str] = None, project_name: Optional[str] = None, status: Optional[int] = None, today_updated: Optional[int] = None, - yh_id: Optional[str] = None) -> List[AccountResponse]: + yh_id: Optional[str] = None, cl_name: Optional[str] = None) -> List[AccountResponse]: """根据多种条件搜索账号""" query = db.query(Account) @@ -49,6 +49,8 @@ class AccountService: query = query.filter(Account.today_updated == today_updated) if yh_id is not None: query = query.filter(Account.yh_id == yh_id) + if cl_name is not None: + query = query.filter(Account.cl_name.like(f"%{cl_name}%")) accounts = query.all() return [AccountResponse.from_orm_account(account) for account in accounts] diff --git a/app/services/base.py b/app/services/base.py index 45b4db6..68925ab 100644 --- a/app/services/base.py +++ b/app/services/base.py @@ -58,7 +58,11 @@ class BaseService(Generic[ModelType]): for field_name, field_value in conditions.items(): if hasattr(self.model, field_name) and field_value is not None: field = getattr(self.model, field_name) - if isinstance(field_value, str): + if field_name == 'account_id': + if not isinstance(field_value, (list, tuple)): + field_value = [field_value] + query = query.filter(field.in_(field_value)) + elif isinstance(field_value, str): query = query.filter(field.like(f"{field_value}")) else: query = query.filter(field == field_value) @@ -73,7 +77,11 @@ class BaseService(Generic[ModelType]): for field_name, field_value in conditions.items(): if hasattr(self.model, field_name) and field_value is not None: field = getattr(self.model, field_name) - if isinstance(field_value, str): + if field_name == 'account_id': + if not isinstance(field_value, (list, tuple)): + field_value = [field_value] + query = query.filter(field.in_(field_value)) + elif isinstance(field_value, str): query = query.filter(field.like(f"{field_value}")) else: query = query.filter(field == field_value)