user.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import axios from 'axios';
  2. import type { User } from '../../share/types.ts';
  3. const API_BASE_URL = '/api';
  4. // 为UserAPI添加的接口响应类型
  5. interface UsersResponse {
  6. data: User[];
  7. pagination: {
  8. total: number;
  9. current: number;
  10. pageSize: number;
  11. totalPages: number;
  12. };
  13. }
  14. export interface UserResponse {
  15. data: User;
  16. message?: string;
  17. }
  18. interface UserCreateResponse {
  19. message: string;
  20. data: User;
  21. }
  22. interface UserUpdateResponse {
  23. message: string;
  24. data: User;
  25. }
  26. interface UserDeleteResponse {
  27. message: string;
  28. id: number;
  29. }
  30. // 用户管理API
  31. export const UserAPI = {
  32. // 获取用户列表
  33. getUsers: async (params?: { page?: number, limit?: number, search?: string }): Promise<UsersResponse> => {
  34. try {
  35. const response = await axios.get(`${API_BASE_URL}/users`, { params });
  36. return response.data;
  37. } catch (error) {
  38. throw error;
  39. }
  40. },
  41. // 获取单个用户详情
  42. getUser: async (userId: number): Promise<UserResponse> => {
  43. try {
  44. const response = await axios.get(`${API_BASE_URL}/users/${userId}`);
  45. return response.data;
  46. } catch (error) {
  47. throw error;
  48. }
  49. },
  50. // 创建用户
  51. createUser: async (userData: Partial<User>): Promise<UserCreateResponse> => {
  52. try {
  53. const response = await axios.post(`${API_BASE_URL}/users`, userData);
  54. return response.data;
  55. } catch (error) {
  56. throw error;
  57. }
  58. },
  59. // 更新用户信息
  60. updateUser: async (userId: number, userData: Partial<User>): Promise<UserUpdateResponse> => {
  61. try {
  62. const response = await axios.put(`${API_BASE_URL}/users/${userId}`, userData);
  63. return response.data;
  64. } catch (error) {
  65. throw error;
  66. }
  67. },
  68. // 删除用户
  69. deleteUser: async (userId: number): Promise<UserDeleteResponse> => {
  70. try {
  71. const response = await axios.delete(`${API_BASE_URL}/users/${userId}`);
  72. return response.data;
  73. } catch (error) {
  74. throw error;
  75. }
  76. },
  77. // 获取当前用户信息
  78. getCurrentUser: async (): Promise<UserResponse> => {
  79. try {
  80. const response = await axios.get(`${API_BASE_URL}/users/me/profile`);
  81. return response.data;
  82. } catch (error) {
  83. throw error;
  84. }
  85. },
  86. // 更新当前用户信息
  87. updateCurrentUser: async (userData: Partial<User>): Promise<UserUpdateResponse> => {
  88. try {
  89. const response = await axios.put(`${API_BASE_URL}/users/me/profile`, userData);
  90. return response.data;
  91. } catch (error) {
  92. throw error;
  93. }
  94. }
  95. };