[fix]:[FL-145][系统消息要支持删除]

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
chengkai3
2026-06-16 17:44:11 +08:00
parent 946312cb6e
commit 3899a2345e
5 changed files with 148 additions and 13 deletions
+15
View File
@@ -3,6 +3,7 @@ from sqlalchemy.orm import Session
from ...core.database import get_db
from ...core.dependencies import CurrentUser, get_current_user, require_permission
from ...schemas.auth import MessageResponse
from ...schemas.system_message import (
SystemMessageCreateRequest,
SystemMessageListResponse,
@@ -11,6 +12,7 @@ from ...schemas.system_message import (
)
from ...services.system_message_service import (
create_system_message,
delete_system_message,
get_unread_count,
list_user_messages,
mark_messages_as_read,
@@ -72,3 +74,16 @@ def mark_my_messages_read(
"""标记消息为已读"""
affected = mark_messages_as_read(db, current_user.user.id, payload.message_ids)
return {"affected": affected}
@router.delete("/{message_id}", response_model=MessageResponse)
def remove_system_message(
message_id: str,
_: CurrentUser = Depends(require_permission("admin.system_message")),
db: Session = Depends(get_db),
) -> MessageResponse:
"""删除系统消息(需要admin.system_message权限)"""
deleted = delete_system_message(db, message_id)
if not deleted:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="System message not found")
return MessageResponse(message="System message deleted")
+9 -1
View File
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import TYPE_CHECKING
from sqlalchemy import func, select, update
from sqlalchemy import delete, func, select, update
from sqlalchemy.orm import Session
from ..models.system_message import SystemMessage
@@ -86,6 +86,14 @@ def mark_messages_as_read(
return result.rowcount or 0
def delete_system_message(db: Session, message_id: str) -> bool:
"""删除系统消息"""
stmt = delete(SystemMessage).where(SystemMessage.id == message_id)
result = db.execute(stmt)
db.commit()
return (result.rowcount or 0) > 0
def get_unread_count(db: Session, user_id: str) -> int:
"""获取用户未读消息数量"""
query = select(func.count()).select_from(SystemMessage).where(