From 9d4fb37ac61b04c619fa8e3c07fec8b4f503acbf Mon Sep 17 00:00:00 2001 From: eya46 <61458340+eya46@users.noreply.github.com> Date: Wed, 8 May 2024 22:03:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0api:=20getMessage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/openapi.json | 18 ++++++++++++ server/services/core/chat/message.service.ts | 31 ++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/server/openapi.json b/server/openapi.json index 6bac963a9d1..d7893950639 100644 --- a/server/openapi.json +++ b/server/openapi.json @@ -830,6 +830,24 @@ } } }, + "/chat.message/getMessage": { + "post": { + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageId": { + "type": "string" + } + } + } + } + } + } + } + }, "/chat.message/deleteMessage": { "post": { "requestBody": { diff --git a/server/services/core/chat/message.service.ts b/server/services/core/chat/message.service.ts index 3dae3c4aed9..0f0ba1a1855 100644 --- a/server/services/core/chat/message.service.ts +++ b/server/services/core/chat/message.service.ts @@ -59,6 +59,11 @@ class MessageService extends TcService { messageId: 'string', }, }); + this.registerAction('getMessage', this.getMessage, { + params: { + messageId: 'string', + }, + }); this.registerAction('deleteMessage', this.deleteMessage, { params: { messageId: 'string', @@ -332,6 +337,32 @@ class MessageService extends TcService { return json; } + /** + * 获取消息 + */ + async getMessage(ctx: TcContext<{ messageId: string }>) { + const { messageId } = ctx.params; + const { t, userId } = ctx.meta; + const message = await this.adapter.model.findById(messageId); + const converseId = String(message.converseId); + const groupId = message.groupId; + // 鉴权 + if (!groupId) { + // 私人会话 + const converseInfo = await call(ctx).getConverseInfo(converseId); + if (!converseInfo.members.map((m) => String(m)).includes(userId)) { + throw new DataNotFoundError(t('该消息未找到')); + } + } else { + // 群组会话 + const groupInfo = await call(ctx).getGroupInfo(String(groupId)); + if (!groupInfo.members.map((m) => m.userId).includes(userId)) { + throw new DataNotFoundError(t('该消息未找到')); + } + } + return message; + } + /** * 删除消息 * 仅支持群组 From 28d46940848bdf3d8db001d309ae9ba82ca021c8 Mon Sep 17 00:00:00 2001 From: eya46 <61458340+eya46@users.noreply.github.com> Date: Thu, 9 May 2024 11:34:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E3=80=81=E6=A3=80=E6=9F=A5=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/services/core/chat/message.service.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/services/core/chat/message.service.ts b/server/services/core/chat/message.service.ts index 0f0ba1a1855..48b70f06741 100644 --- a/server/services/core/chat/message.service.ts +++ b/server/services/core/chat/message.service.ts @@ -344,6 +344,9 @@ class MessageService extends TcService { const { messageId } = ctx.params; const { t, userId } = ctx.meta; const message = await this.adapter.model.findById(messageId); + if (!message) { + throw new DataNotFoundError(t('该消息未找到')); + } const converseId = String(message.converseId); const groupId = message.groupId; // 鉴权 @@ -351,13 +354,13 @@ class MessageService extends TcService { // 私人会话 const converseInfo = await call(ctx).getConverseInfo(converseId); if (!converseInfo.members.map((m) => String(m)).includes(userId)) { - throw new DataNotFoundError(t('该消息未找到')); + throw new NoPermissionError(t('没有当前会话权限')); } } else { // 群组会话 const groupInfo = await call(ctx).getGroupInfo(String(groupId)); if (!groupInfo.members.map((m) => m.userId).includes(userId)) { - throw new DataNotFoundError(t('该消息未找到')); + throw new NoPermissionError(t('没有当前会话权限')); } } return message;