账号新增cl_name字段,底层搜索新增account_id的[]类型in搜索

This commit is contained in:
lhx
2025-12-15 17:36:26 +08:00
parent 7d6881cf87
commit 9fb187a0cd
5 changed files with 21 additions and 5 deletions

View File

@@ -52,7 +52,8 @@ def get_account(request: AccountGetRequest, db: Session = Depends(get_db)):
project_name=request.project_name, project_name=request.project_name,
status=request.status, status=request.status,
today_updated=request.today_updated, today_updated=request.today_updated,
yh_id=request.yh_id yh_id=request.yh_id,
cl_name=request.cl_name
) )
if not accounts: if not accounts:
return AccountListResponse( return AccountListResponse(

View File

@@ -16,6 +16,7 @@ class Account(Base):
update_time = Column(String(1000), nullable=False, comment="更新时间跨度") update_time = Column(String(1000), nullable=False, comment="更新时间跨度")
max_variation = Column(Integer, default=1, comment="变化量的绝对值,单位是毫米") max_variation = Column(Integer, default=1, comment="变化量的绝对值,单位是毫米")
yh_id = Column(String(1000), comment="宇恒一号用户id") yh_id = Column(String(1000), comment="宇恒一号用户id")
cl_name = Column(String(100), nullable=True, comment="测量人员")
# 模型转字典 # 模型转字典

View File

@@ -11,6 +11,7 @@ class AccountBase(BaseModel):
update_time: Optional[str] = None update_time: Optional[str] = None
max_variation: Optional[int] = None max_variation: Optional[int] = None
yh_id: Optional[str] = None yh_id: Optional[str] = None
cl_name: Optional[str] = None
class AccountCreate(AccountBase): class AccountCreate(AccountBase):
pass pass
@@ -22,6 +23,7 @@ class AccountUpdate(BaseModel):
today_updated: Optional[int] = None today_updated: Optional[int] = None
project_name: Optional[str] = None project_name: Optional[str] = None
update_time: Optional[str] = None update_time: Optional[str] = None
cl_name: Optional[str] = None
class AccountResponse(AccountBase): class AccountResponse(AccountBase):
account_id: int account_id: int
@@ -46,7 +48,8 @@ class AccountResponse(AccountBase):
updated_at=account.updated_at, updated_at=account.updated_at,
update_time=account.update_time, update_time=account.update_time,
max_variation=account.max_variation, max_variation=account.max_variation,
yh_id=account.yh_id yh_id=account.yh_id,
cl_name=account.cl_name
) )
class AccountListRequest(BaseModel): class AccountListRequest(BaseModel):
@@ -61,6 +64,7 @@ class AccountGetRequest(BaseModel):
today_updated: Optional[int] = None today_updated: Optional[int] = None
update_time: Optional[str] = None update_time: Optional[str] = None
yh_id: Optional[str] = None yh_id: Optional[str] = None
cl_name: Optional[str] = None
class AccountUpdateRequest(BaseModel): class AccountUpdateRequest(BaseModel):
account_id: int account_id: int

View File

@@ -33,7 +33,7 @@ class AccountService:
def search_accounts(db: Session, account_id: Optional[int] = None, def search_accounts(db: Session, account_id: Optional[int] = None,
username: Optional[str] = None, project_name: Optional[str] = None, username: Optional[str] = None, project_name: Optional[str] = None,
status: Optional[int] = None, today_updated: Optional[int] = 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) query = db.query(Account)
@@ -49,6 +49,8 @@ class AccountService:
query = query.filter(Account.today_updated == today_updated) query = query.filter(Account.today_updated == today_updated)
if yh_id is not None: if yh_id is not None:
query = query.filter(Account.yh_id == yh_id) 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() accounts = query.all()
return [AccountResponse.from_orm_account(account) for account in accounts] return [AccountResponse.from_orm_account(account) for account in accounts]

View File

@@ -58,7 +58,11 @@ class BaseService(Generic[ModelType]):
for field_name, field_value in conditions.items(): for field_name, field_value in conditions.items():
if hasattr(self.model, field_name) and field_value is not None: if hasattr(self.model, field_name) and field_value is not None:
field = getattr(self.model, field_name) 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}")) query = query.filter(field.like(f"{field_value}"))
else: else:
query = query.filter(field == field_value) query = query.filter(field == field_value)
@@ -73,7 +77,11 @@ class BaseService(Generic[ModelType]):
for field_name, field_value in conditions.items(): for field_name, field_value in conditions.items():
if hasattr(self.model, field_name) and field_value is not None: if hasattr(self.model, field_name) and field_value is not None:
field = getattr(self.model, field_name) 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}")) query = query.filter(field.like(f"{field_value}"))
else: else:
query = query.filter(field == field_value) query = query.filter(field == field_value)