| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import axios from 'axios';
- import type {
- MessageType, MessageStatus, UserMessage
- } from '../../share/types.ts';
- const API_BASE_URL = '/api';
- // 消息API响应类型
- export interface MessageResponse {
- message: string;
- data?: any;
- }
- export interface MessagesResponse {
- data: UserMessage[];
- pagination: {
- total: number;
- current: number;
- pageSize: number;
- totalPages: number;
- };
- }
- export interface UnreadCountResponse {
- count: number;
- }
- // 消息API
- export const MessageAPI = {
- // 获取消息列表
- getMessages: async (params?: {
- page?: number,
- pageSize?: number,
- type?: MessageType,
- status?: MessageStatus
- }): Promise<MessagesResponse> => {
- try {
- const response = await axios.get(`${API_BASE_URL}/messages`, { params });
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- // 获取消息详情
- getMessage: async (id: number): Promise<MessageResponse> => {
- try {
- const response = await axios.get(`${API_BASE_URL}/messages/${id}`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- // 发送消息
- sendMessage: async (data: {
- title: string,
- content: string,
- type: MessageType,
- receiver_ids: number[]
- }): Promise<MessageResponse> => {
- try {
- const response = await axios.post(`${API_BASE_URL}/messages`, data);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- // 删除消息(软删除)
- deleteMessage: async (id: number): Promise<MessageResponse> => {
- try {
- const response = await axios.delete(`${API_BASE_URL}/messages/${id}`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- // 获取未读消息数量
- getUnreadCount: async (): Promise<UnreadCountResponse> => {
- try {
- const response = await axios.get(`${API_BASE_URL}/messages/count/unread`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- // 标记消息为已读
- markAsRead: async (id: number): Promise<MessageResponse> => {
- try {
- const response = await axios.post(`${API_BASE_URL}/messages/${id}/read`);
- return response.data;
- } catch (error) {
- throw error;
- }
- }
- };
|