解决超话签到中选择性签到的逻辑问题
This commit is contained in:
@@ -304,7 +304,34 @@ async def list_topics(
|
||||
return error_response("Cookie 解密失败", "COOKIE_ERROR", status_code=400)
|
||||
|
||||
topics = await _get_super_topics(cookie_str, account.weibo_user_id)
|
||||
return success_response({"topics": topics, "total": len(topics)})
|
||||
return success_response({
|
||||
"topics": topics,
|
||||
"total": len(topics),
|
||||
"selected_topics": account.selected_topics,
|
||||
})
|
||||
|
||||
|
||||
@router.put("/{account_id}/topics")
|
||||
async def save_selected_topics(
|
||||
account_id: str,
|
||||
body: dict = Body(...),
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""保存用户选择的签到超话列表。空列表或 null 表示签到全部。"""
|
||||
account = await _get_owned_account(account_id, user, db)
|
||||
selected = body.get("selected_topics")
|
||||
# null 或空列表都表示全部签到
|
||||
if selected and isinstance(selected, list) and len(selected) > 0:
|
||||
account.selected_topics = selected
|
||||
else:
|
||||
account.selected_topics = None
|
||||
await db.commit()
|
||||
await db.refresh(account)
|
||||
return success_response(
|
||||
_account_to_dict(account),
|
||||
f"已保存 {len(selected) if selected else 0} 个超话" if selected else "已设为签到全部超话",
|
||||
)
|
||||
|
||||
|
||||
# ---- MANUAL SIGNIN ----
|
||||
|
||||
@@ -27,6 +27,7 @@ class AccountResponse(BaseModel):
|
||||
weibo_user_id: str
|
||||
remark: Optional[str]
|
||||
status: str
|
||||
selected_topics: Optional[list] = None
|
||||
last_checked_at: Optional[datetime]
|
||||
created_at: Optional[datetime]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user