qiangdanxitong/frontend/src/api/notification.ts

82 lines
1.8 KiB
TypeScript

import request from '@/utils/request'
import type { Result } from '@/api/types'
// 通知接口类型定义
export interface Notification {
id: number
notificationType: string
receiverId: number
senderId?: number
title: string
content: string
relatedId?: number
relatedType?: string
linkUrl?: string
isRead: number
readTime?: string
pushDingtalk?: number
dingtalkStatus?: string
dingtalkPushTime?: string
priority: string
createTime: string
updateTime: string
}
export interface PageResult<T> {
records: T[]
total: number
size: number
current: number
pages: number
}
/**
* 获取用户通知列表(分页)
*/
export function getNotifications(params: {
receiverId: number
pageNum?: number
pageSize?: number
unreadOnly?: boolean
}): Promise<PageResult<Notification>> {
return request.get<Result<PageResult<Notification>>>('/notifications', { params })
.then(res => res.data)
}
/**
* 获取未读数量
*/
export function getUnreadCount(receiverId: number): Promise<number> {
return request.get<Result<number>>('/notifications/unread-count', {
params: { receiverId }
}).then(res => res.data)
}
/**
* 标记为已读
*/
export function markAsRead(id: number, receiverId: number): Promise<boolean> {
return request.put<Result<boolean>>(`/notifications/${id}/read`, null, {
params: { receiverId }
}).then(res => res.data)
}
/**
* 批量标记所有为已读
*/
export function markAllAsRead(receiverId: number): Promise<number> {
return request.put<Result<number>>('/notifications/read-all', null, {
params: { receiverId }
}).then(res => res.data)
}
/**
* 删除通知
*/
export function deleteNotification(id: number, receiverId: number): Promise<boolean> {
return request.delete<Result<boolean>>(`/notifications/${id}`, {
params: { receiverId }
}).then(res => res.data)
}