This commit is contained in:
2026-06-13 10:40:59 +08:00
parent ebcfb0c258
commit 318ddd85a5
15 changed files with 614 additions and 30 deletions
@@ -115,6 +115,33 @@ class ConversationService:
raise ValueError("群主不能退出,请先转让群主身份")
member.left_at = datetime.utcnow()
async def dissolve_group(self, conv_id: str, user_id: str):
"""解散群聊(仅群主)"""
member = await self._get_member(conv_id, user_id)
if not member:
raise ValueError("你不在该群中")
if member.role != "owner":
raise ValueError("只有群主可以解散群聊")
# 验证会话存在且为群聊
conv_result = await self.db.execute(
select(Conversation).where(Conversation.id == conv_id)
)
conv = conv_result.scalars().first()
if not conv or conv.type != "group":
raise ValueError("群聊不存在")
# 软删除所有成员(设置 left_at)
members_result = await self.db.execute(
select(ConversationMember).where(
ConversationMember.conversation_id == conv_id,
ConversationMember.left_at.is_(None),
)
)
now = datetime.utcnow()
for m in members_result.scalars().all():
m.left_at = now
async def update_member_role(self, conv_id: str, user_id: str, target_user_id: str, role: str):
"""修改成员角色(仅群主)"""
member = await self._get_member(conv_id, user_id)