From 4722f4c18de0980a3ef2bf497369150f1dce3006 Mon Sep 17 00:00:00 2001 From: yourname Date: Tue, 13 May 2025 11:52:12 +0000 Subject: [PATCH] =?UTF-8?q?client/mobile/api.ts=20=E5=B7=B2=E6=8B=86?= =?UTF-8?q?=E5=88=86=E5=88=B0=20client/mobile/api/=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/mobile/api.ts | 788 ------------------------------------------- 1 file changed, 788 deletions(-) delete mode 100644 client/mobile/api.ts diff --git a/client/mobile/api.ts b/client/mobile/api.ts deleted file mode 100644 index d2da234..0000000 --- a/client/mobile/api.ts +++ /dev/null @@ -1,788 +0,0 @@ -import axios from 'axios'; -import type { MinioUploadPolicy, OSSUploadPolicy } from '@d8d-appcontainer/types'; -import 'dayjs/locale/zh-cn'; -import type { - User, FileLibrary, FileCategory, ThemeSettings, - SystemSetting, SystemSettingGroupData, - LoginLocation, LoginLocationDetail, - MessageType, MessageStatus, UserMessage, - KnowInfo -} from '../share/types.ts'; - - - -// 定义API基础URL -const API_BASE_URL = '/api'; - -// 获取OSS完整URL -export const getOssUrl = (path: string): string => { - // 获取全局配置中的OSS_HOST,如果不存在使用默认值 - const ossHost = (window.CONFIG?.OSS_BASE_URL) || ''; - // 确保path不以/开头 - const ossPath = path.startsWith('/') ? path.substring(1) : path; - return `${ossHost}/${ossPath}`; -}; - -// =================== -// Auth API 定义部分 -// =================== - -// 定义API返回数据类型 -interface AuthLoginResponse { - message: string; - token: string; - refreshToken?: string; - user: User; -} - -interface AuthResponse { - message: string; - [key: string]: any; -} - -// 定义Auth API接口类型 -interface AuthAPIType { - login: (username: string, password: string, latitude?: number, longitude?: number) => Promise; - register: (username: string, email: string, password: string) => Promise; - logout: () => Promise; - getCurrentUser: () => Promise; - updateUser: (userId: number, userData: Partial) => Promise; - changePassword: (oldPassword: string, newPassword: string) => Promise; - requestPasswordReset: (email: string) => Promise; - resetPassword: (token: string, newPassword: string) => Promise; -} - - -// Auth相关API -export const AuthAPI: AuthAPIType = { - // 登录API - login: async (username: string, password: string, latitude?: number, longitude?: number) => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/login`, { - username, - password, - latitude, - longitude - }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 注册API - register: async (username: string, email: string, password: string) => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/register`, { username, email, password }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 登出API - logout: async () => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/logout`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取当前用户信息 - getCurrentUser: async () => { - try { - const response = await axios.get(`${API_BASE_URL}/auth/me`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新用户信息 - updateUser: async (userId: number, userData: Partial) => { - try { - const response = await axios.put(`${API_BASE_URL}/auth/users/${userId}`, userData); - return response.data; - } catch (error) { - throw error; - } - }, - - // 修改密码 - changePassword: async (oldPassword: string, newPassword: string) => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/change-password`, { oldPassword, newPassword }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 请求重置密码 - requestPasswordReset: async (email: string) => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/request-password-reset`, { email }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 重置密码 - resetPassword: async (token: string, newPassword: string) => { - try { - const response = await axios.post(`${API_BASE_URL}/auth/reset-password`, { token, newPassword }); - return response.data; - } catch (error) { - throw error; - } - } -}; - -// 为UserAPI添加的接口响应类型 -interface UsersResponse { - data: User[]; - pagination: { - total: number; - current: number; - pageSize: number; - totalPages: number; - }; -} - -export interface UserResponse { - data: User; - message?: string; -} - -interface UserCreateResponse { - message: string; - data: User; -} - -interface UserUpdateResponse { - message: string; - data: User; -} - -interface UserDeleteResponse { - message: string; - id: number; -} - -// 用户管理API -export const UserAPI = { - // 获取用户列表 - getUsers: async (params?: { page?: number, limit?: number, search?: string }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/users`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取单个用户详情 - getUser: async (userId: number): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/users/${userId}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 创建用户 - createUser: async (userData: Partial): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/users`, userData); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新用户信息 - updateUser: async (userId: number, userData: Partial): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/users/${userId}`, userData); - return response.data; - } catch (error) { - throw error; - } - }, - - // 删除用户 - deleteUser: async (userId: number): Promise => { - try { - const response = await axios.delete(`${API_BASE_URL}/users/${userId}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取当前用户信息 - getCurrentUser: async (): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/users/me/profile`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新当前用户信息 - updateCurrentUser: async (userData: Partial): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/users/me/profile`, userData); - return response.data; - } catch (error) { - throw error; - } - } -}; - -// 定义文件相关接口类型 -interface FileUploadPolicyResponse { - message: string; - data: MinioUploadPolicy | OSSUploadPolicy; -} - -interface FileListResponse { - message: string; - data: { - list: FileLibrary[]; - pagination: { - current: number; - pageSize: number; - total: number; - }; - }; -} - -interface FileSaveResponse { - message: string; - data: FileLibrary; -} - -interface FileInfoResponse { - message: string; - data: FileLibrary; -} - -interface FileDeleteResponse { - message: string; -} - - -interface FileCategoryListResponse { - data: FileCategory[]; - total: number; - page: number; - pageSize: number; -} - -interface FileCategoryCreateResponse { - message: string; - data: FileCategory; -} - -interface FileCategoryUpdateResponse { - message: string; - data: FileCategory; -} - -interface FileCategoryDeleteResponse { - message: string; -} - -// 文件API接口定义 -export const FileAPI = { - // 获取文件上传策略 - getUploadPolicy: async (filename: string, prefix: string = 'uploads/', maxSize: number = 10 * 1024 * 1024): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/upload/policy`, { - params: { filename, prefix, maxSize } - }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 保存文件信息 - saveFileInfo: async (fileData: Partial): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/upload/save`, fileData); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取文件列表 - getFileList: async (params?: { - page?: number, - pageSize?: number, - category_id?: number, - fileType?: string, - keyword?: string - }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/upload/list`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取单个文件信息 - getFileInfo: async (id: number): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/upload/${id}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新文件下载计数 - updateDownloadCount: async (id: number): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/upload/${id}/download`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 删除文件 - deleteFile: async (id: number): Promise => { - try { - const response = await axios.delete(`${API_BASE_URL}/upload/${id}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取文件分类列表 - getCategories: async (params?: { - page?: number, - pageSize?: number, - search?: string - }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/file-categories`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 创建文件分类 - createCategory: async (data: Partial): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/file-categories`, data); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新文件分类 - updateCategory: async (id: number, data: Partial): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/file-categories/${id}`, data); - return response.data; - } catch (error) { - throw error; - } - }, - - // 删除文件分类 - deleteCategory: async (id: number): Promise => { - try { - const response = await axios.delete(`${API_BASE_URL}/file-categories/${id}`); - return response.data; - } catch (error) { - throw error; - } - } -}; - - -// Theme API 定义 -export const ThemeAPI = { - // 获取主题设置 - getThemeSettings: async (): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/theme`); - return response.data.data; - } catch (error) { - throw error; - } - }, - - // 更新主题设置 - updateThemeSettings: async (themeData: Partial): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/theme`, themeData); - return response.data.data; - } catch (error) { - throw error; - } - }, - - // 重置主题设置 - resetThemeSettings: async (): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/theme/reset`); - return response.data.data; - } catch (error) { - throw error; - } - } -}; - -// 图表数据API接口类型 -interface ChartDataResponse { - message: string; - data: T; -} - -interface UserActivityData { - date: string; - count: number; -} - -interface FileUploadsData { - month: string; - count: number; -} - -interface FileTypesData { - type: string; - value: number; -} - -interface DashboardOverviewData { - userCount: number; - fileCount: number; - articleCount: number; - todayLoginCount: number; -} - -// 图表数据API -export const ChartAPI = { - // 获取用户活跃度数据 - getUserActivity: async (): Promise> => { - try { - const response = await axios.get(`${API_BASE_URL}/charts/user-activity`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取文件上传统计数据 - getFileUploads: async (): Promise> => { - try { - const response = await axios.get(`${API_BASE_URL}/charts/file-uploads`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取文件类型分布数据 - getFileTypes: async (): Promise> => { - try { - const response = await axios.get(`${API_BASE_URL}/charts/file-types`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取仪表盘概览数据 - getDashboardOverview: async (): Promise> => { - try { - const response = await axios.get(`${API_BASE_URL}/charts/dashboard-overview`); - return response.data; - } catch (error) { - throw error; - } - } -}; -// 首页API相关类型定义 -interface HomeBannersResponse { - message: string; - data: KnowInfo[]; -} - -interface HomeNewsResponse { - message: string; - data: KnowInfo[]; - pagination: { - total: number; - current: number; - pageSize: number; - totalPages: number; - }; -} - -interface HomeNoticesResponse { - message: string; - data: { - id: number; - title: string; - content: string; - created_at: string; - }[]; - pagination: { - total: number; - current: number; - pageSize: number; - totalPages: number; - }; -} - -// 首页API -export const HomeAPI = { - // 获取轮播图 - getBanners: async (): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/home/banners`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取新闻列表 - getNews: async (params?: { - page?: number, - pageSize?: number, - category?: string - }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/home/news`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取通知列表 - getNotices: async (params?: { - page?: number, - pageSize?: number - }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/home/notices`, { params }); - return response.data; - } catch (error) { - throw error; - } - } -}; - -// 地图相关API的接口类型定义 -export interface LoginLocationResponse { - message: string; - data: LoginLocation[]; -} - -export interface LoginLocationDetailResponse { - message: string; - data: LoginLocationDetail; -} - -export interface LoginLocationUpdateResponse { - message: string; - data: LoginLocationDetail; -} - - -// 地图相关API -export const MapAPI = { - // 获取地图标记点数据 - getMarkers: async (params?: { - startTime?: string; - endTime?: string; - userId?: number - }): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/map/markers`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取登录位置详情 - getLocationDetail: async (locationId: number): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/map/location/${locationId}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 更新登录位置信息 - updateLocation: async (locationId: number, data: { - longitude: number; - latitude: number; - location_name?: string; - }): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/map/location/${locationId}`, data); - return response.data; - } catch (error) { - throw error; - } - } -}; - -// 系统设置API -export const SystemAPI = { - // 获取所有系统设置 - getSettings: async (): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/settings`); - return response.data.data; - } catch (error) { - throw error; - } - }, - - // 获取指定分组的系统设置 - getSettingsByGroup: async (group: string): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/settings/group/${group}`); - return response.data.data; - } catch (error) { - throw error; - } - - }, - - // 更新系统设置 - updateSettings: async (settings: Partial[]): Promise => { - try { - const response = await axios.put(`${API_BASE_URL}/settings`, settings); - return response.data.data; - } catch (error) { - throw error; - } - }, - - // 重置系统设置 - resetSettings: async (): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/settings/reset`); - return response.data.data; - } catch (error) { - throw error; - } - } -}; - - -// 消息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 => { - try { - const response = await axios.get(`${API_BASE_URL}/messages`, { params }); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取消息详情 - getMessage: async (id: number): Promise => { - 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 => { - try { - const response = await axios.post(`${API_BASE_URL}/messages`, data); - return response.data; - } catch (error) { - throw error; - } - }, - - // 删除消息(软删除) - deleteMessage: async (id: number): Promise => { - try { - const response = await axios.delete(`${API_BASE_URL}/messages/${id}`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 获取未读消息数量 - getUnreadCount: async (): Promise => { - try { - const response = await axios.get(`${API_BASE_URL}/messages/count/unread`); - return response.data; - } catch (error) { - throw error; - } - }, - - // 标记消息为已读 - markAsRead: async (id: number): Promise => { - try { - const response = await axios.post(`${API_BASE_URL}/messages/${id}/read`); - return response.data; - } catch (error) { - throw error; - } - } -}; \ No newline at end of file