From 9f91cbe0d3ce44021cc29b42812e59d15aa2817b Mon Sep 17 00:00:00 2001 From: xingc Date: Mon, 28 Apr 2025 14:56:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(card):=20=E5=8D=A1=E7=89=87=E5=B1=95?= =?UTF-8?q?=E7=A4=BA/=E9=9A=90=E8=97=8F=E8=B0=83=E6=95=B4=E4=B8=BA?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/routers/card/routes.py | 8 ++++---- core/routers/card/schema.py | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/routers/card/routes.py b/core/routers/card/routes.py index 4c505f0..0782e5e 100644 --- a/core/routers/card/routes.py +++ b/core/routers/card/routes.py @@ -274,19 +274,19 @@ async def update_card_price_info( return {'message': 'ok' if result is not None else 'fail'} -@card_router.post('/{card_id}/display/', summary='卡片展示/隐藏', response_model=base_schema.BaseResponse) +@card_router.post('/display/', summary='卡片展示/隐藏', response_model=base_schema.BaseResponse) async def display_card_status( - card_id: int, action: Literal['displayed', 'undisplayed'], + payload: schema.DisplayCardIn, login_user: LoginUser = Depends(get_current_user_form_http), db_session: AsyncSession = Depends(get_async_session) ): db_crud = CRUD(db_session, UserCollection) - result = await db_crud.update( + result = await db_crud.updates( data={ 'displayed': (action == 'displayed'), }, - filters={'card_id': card_id, 'user_id': login_user.user_id} + filters={'card_id__in': payload.card_ids, 'user_id': login_user.user_id} ) return {'message': 'ok' if result is not None else 'fail'} diff --git a/core/routers/card/schema.py b/core/routers/card/schema.py index 91754f6..831c37a 100644 --- a/core/routers/card/schema.py +++ b/core/routers/card/schema.py @@ -49,7 +49,7 @@ class Card(BaseModel): class CardIn(Card): category: CardCategoryType source: PlatformSourceType - diy_source: Optional[str] = None + diy_source: Optional[constr(max_length=50)] = None reward: Optional[bool] = False @@ -71,8 +71,13 @@ class CardOut(CardVisitOut): card_year: str | None purchase_price: Optional[condecimal(max_digits=10, decimal_places=2)] = None display_price: Optional[condecimal(max_digits=10, decimal_places=2)] = None + displayed: Optional[bool] = True diy_source: Optional[str] = None +class DisplayCardIn(BaseModel): + card_ids: list[int] + + class DeleteCardIn(BaseModel): card_ids: list[int]