82 lines
1.8 KiB
TypeScript
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)
|
|
}
|
|
|