From a16e7a416584f097c5d36aa48fbcc5bc6f3b5861 Mon Sep 17 00:00:00 2001 From: zyh Date: Thu, 10 Apr 2025 09:21:05 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B6=88=E6=81=AF=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E9=9D=A2=EF=BC=8C=E8=B0=83=E6=95=B4=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=A0=87=E8=AE=B0=E6=B6=88=E6=81=AF=E4=B8=BA=E5=B7=B2?= =?UTF-8?q?=E8=AF=BB=E7=9A=84API=E8=B7=AF=E7=94=B1=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=94=A8=E6=88=B7=E6=B6=88=E6=81=AF=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BD=93=E9=AA=8C=E5=92=8C=E4=BB=A3=E7=A0=81=E5=8F=AF=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/admin/pages_messages.tsx | 12 ++++++------ client/mobile/api.ts | 4 ++-- client/share/types.ts | 5 ++++- server/routes_messages.ts | 25 +++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/client/admin/pages_messages.tsx b/client/admin/pages_messages.tsx index 89c5da9..3dc7c56 100644 --- a/client/admin/pages_messages.tsx +++ b/client/admin/pages_messages.tsx @@ -90,11 +90,11 @@ export const MessagesPage = () => { }, { title: '状态', - dataIndex: 'status', - key: 'status', - render: (status: MessageStatus) => ( - - {MessageStatusNameMap[status]} + dataIndex: 'user_status', + key: 'user_status', + render: (user_status: MessageStatus) => ( + + {MessageStatusNameMap[user_status]} ), }, @@ -112,7 +112,7 @@ export const MessagesPage = () => { diff --git a/client/mobile/api.ts b/client/mobile/api.ts index c97b080..9324ae4 100644 --- a/client/mobile/api.ts +++ b/client/mobile/api.ts @@ -5,7 +5,7 @@ import type { User, FileLibrary, FileCategory, ThemeSettings, SystemSetting, SystemSettingGroupData, LoginLocation, LoginLocationDetail, - Message, MessageType, MessageStatus + Message, MessageType, MessageStatus, UserMessage } from '../share/types.ts'; @@ -608,7 +608,7 @@ export interface MessageResponse { } export interface MessagesResponse { - data: Message[]; + data: UserMessage[]; pagination: { total: number; current: number; diff --git a/client/share/types.ts b/client/share/types.ts index a58bdfd..568deca 100644 --- a/client/share/types.ts +++ b/client/share/types.ts @@ -487,7 +487,10 @@ export interface UserMessage { id: number; user_id: number; message_id: number; - status: MessageStatus; + title: string; + content: string; + user_status: MessageStatus; + user_message_id: number; is_deleted?: DeleteStatus; read_at?: string; created_at: string; diff --git a/server/routes_messages.ts b/server/routes_messages.ts index d2e98c9..658568b 100644 --- a/server/routes_messages.ts +++ b/server/routes_messages.ts @@ -190,5 +190,30 @@ export function createMessagesRoutes(withAuth: WithAuth) { } }) + // 标记消息为已读 + messagesRoutes.post('/:id/read', withAuth, async (c) => { + try { + const apiClient = c.get('apiClient') + const user = c.get('user') + if (!user) return c.json({ error: '未授权访问' }, 401) + + const messageId = c.req.param('id') + + await apiClient.database.table('user_messages') + .where('user_id', user.id) + .where('message_id', messageId) + .update({ + status: MessageStatus.READ, + read_at: apiClient.database.fn.now(), + updated_at: apiClient.database.fn.now() + }) + + return c.json({ message: '消息已标记为已读' }) + } catch (error) { + console.error('标记消息为已读失败:', error) + return c.json({ error: '标记消息为已读失败' }, 500) + } + }) + return messagesRoutes } \ No newline at end of file