1.9
This commit is contained in:
@@ -10,12 +10,19 @@ from app.schemas.conversation import (
|
||||
GroupCreate, GroupUpdate, MemberAdd, RoleUpdate,
|
||||
)
|
||||
from app.services.conversation_service import ConversationService
|
||||
from app.services.draft_service import DraftService
|
||||
from app.websocket.events import EventType
|
||||
from app.websocket.manager import manager
|
||||
from pydantic import BaseModel
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
class ConvPrefs(BaseModel):
|
||||
is_pinned: bool | None = None
|
||||
is_muted: bool | None = None
|
||||
|
||||
|
||||
@router.get("/", response_model=list[dict])
|
||||
async def list_conversations(
|
||||
user: User = Depends(get_current_user),
|
||||
@@ -181,3 +188,86 @@ async def update_member_role(
|
||||
return {"success": True, "message": "角色已更新"}
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.put("/{conversation_id}/prefs")
|
||||
async def update_prefs(
|
||||
conversation_id: str,
|
||||
req: ConvPrefs,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""更新会话个人偏好(置顶/免打扰)"""
|
||||
service = ConversationService(db)
|
||||
try:
|
||||
return await service.update_prefs(conversation_id, user.id, req.is_pinned, req.is_muted)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/{conversation_id}/draft")
|
||||
async def get_draft(
|
||||
conversation_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""获取草稿"""
|
||||
service = DraftService()
|
||||
return {"draft": await service.get(user.id, conversation_id)}
|
||||
|
||||
|
||||
@router.put("/{conversation_id}/draft")
|
||||
async def save_draft(
|
||||
conversation_id: str,
|
||||
body: dict,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""保存草稿"""
|
||||
service = DraftService()
|
||||
await service.set(user.id, conversation_id, body.get("draft", ""))
|
||||
return {"success": True}
|
||||
|
||||
|
||||
@router.get("/{conversation_id}/announcement")
|
||||
async def get_announcement(
|
||||
conversation_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""获取群公告"""
|
||||
from app.services.announcement_service import AnnouncementService
|
||||
service = AnnouncementService(db)
|
||||
return await service.get(conversation_id)
|
||||
|
||||
|
||||
@router.post("/{conversation_id}/announcement")
|
||||
async def set_announcement(
|
||||
conversation_id: str,
|
||||
body: dict,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""设置群公告(管理员)"""
|
||||
from app.services.announcement_service import AnnouncementService
|
||||
service = AnnouncementService(db)
|
||||
try:
|
||||
return await service.upsert(conversation_id, user.id, body.get("content", ""))
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.put("/{conversation_id}/mute-all")
|
||||
async def toggle_mute_all(
|
||||
conversation_id: str,
|
||||
body: dict,
|
||||
user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""全员禁言开关(群主/管理员)"""
|
||||
service = ConversationService(db)
|
||||
try:
|
||||
await service.update_group(conversation_id, user.id, mute_all=body.get("mute_all"))
|
||||
return {"success": True, "mute_all": body.get("mute_all")}
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
Reference in New Issue
Block a user