2
0

user.ts 2.4 KB

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