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