更新消息管理页面,调整消息数据结构,新增标记消息为已读的API路由,优化用户消息状态处理,提升用户体验和代码可维护性。
This commit is contained in:
@@ -90,11 +90,11 @@ export const MessagesPage = () => {
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'status',
|
||||
key: 'status',
|
||||
render: (status: MessageStatus) => (
|
||||
<span style={{ color: status === MessageStatus.UNREAD ? 'red' : 'green' }}>
|
||||
{MessageStatusNameMap[status]}
|
||||
dataIndex: 'user_status',
|
||||
key: 'user_status',
|
||||
render: (user_status: MessageStatus) => (
|
||||
<span style={{ color: user_status === MessageStatus.UNREAD ? 'red' : 'green' }}>
|
||||
{MessageStatusNameMap[user_status]}
|
||||
</span>
|
||||
),
|
||||
},
|
||||
@@ -112,7 +112,7 @@ export const MessagesPage = () => {
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => markAsReadMutation.mutate(record.id)}
|
||||
disabled={record.status === MessageStatus.READ}
|
||||
disabled={record.user_status === MessageStatus.READ}
|
||||
>
|
||||
标记已读
|
||||
</Button>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user