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]