Browse Source

refactor: 重构 userService.getAllUsers 方法,参考 protocolService.getProtocolVersions 实现方式

feature/x1-web-request
root 4 weeks ago
parent
commit
0432773a8d
  1. 147
      src/X1.WebUI/src/services/userService.ts

147
src/X1.WebUI/src/services/userService.ts

@ -1,5 +1,6 @@
import { httpClient } from '@/lib/http-client';
import { OperationResult } from '@/types/auth';
import { API_PATHS } from '@/constants/api';
export interface User {
id: string;
@ -12,14 +13,23 @@ export interface User {
isActive?: boolean;
}
// 获取用户列表请求接口
export interface GetAllUsersRequest {
pageNumber?: number;
pageSize?: number;
searchTerm?: string;
isActive?: boolean;
}
// 获取用户列表响应接口
export interface GetAllUsersResponse {
users: User[];
totalCount: number;
pageNumber: number;
pageSize: number;
totalPages: number;
hasPreviousPage: boolean;
hasNextPage: boolean;
items: User[];
}
export interface CreateUserRequest {
@ -38,121 +48,46 @@ export interface UpdateUserRequest {
isActive?: boolean;
}
export interface UserService {
getAllUsers: (params?: { userName?: string; page?: number; pageSize?: number }) => Promise<OperationResult<GetAllUsersResponse>>;
getUser: (userId: string) => Promise<OperationResult<User>>;
createUser: (data: CreateUserRequest) => Promise<OperationResult<User>>;
updateUser: (userId: string, data: UpdateUserRequest) => Promise<OperationResult<User>>;
updateUserRoles: (userId: string, roles: string[]) => Promise<OperationResult<User>>;
deleteUser: (userId: string) => Promise<OperationResult<void>>;
}
class UserService {
private readonly baseUrl = API_PATHS.USERS;
export const userService: UserService = {
getAllUsers: async (params = {}) => {
try {
const mappedParams = {
PageNumber: params.page ?? 1,
PageSize: params.pageSize ?? 10,
UserName: params.userName ?? undefined
};
const response = await httpClient.get<{ data: GetAllUsersResponse }>('/users', { params: mappedParams });
const resultData = (response.data && 'users' in response.data) ? response.data : response.data?.data;
if (resultData && Array.isArray(resultData.users)) {
resultData.users = resultData.users.map(u => ({
...u,
id: u.id ?? u.userId,
isActive: u.isActive ?? false
}));
}
return {
success: true,
data: resultData as GetAllUsersResponse,
message: '获取用户列表成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '获取用户列表失败'
};
// 获取用户列表
async getAllUsers(params: GetAllUsersRequest = {}): Promise<OperationResult<GetAllUsersResponse>> {
const queryParams = new URLSearchParams();
if (params.pageNumber) queryParams.append('pageNumber', params.pageNumber.toString());
if (params.pageSize) queryParams.append('pageSize', params.pageSize.toString());
if (params.searchTerm) queryParams.append('searchTerm', params.searchTerm);
if (params.isActive !== undefined) queryParams.append('isActive', params.isActive.toString());
const url = `${this.baseUrl}?${queryParams.toString()}`;
return httpClient.get<GetAllUsersResponse>(url);
}
},
getUser: async (userId: string): Promise<OperationResult<User>> => {
try {
const response = await httpClient.get<User>(`/users/${userId}`);
return {
success: true,
data: response.data || undefined,
message: '获取用户详情成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '获取用户详情失败'
};
// 根据ID获取用户详情
async getUser(userId: string): Promise<OperationResult<User>> {
return httpClient.get<User>(`${this.baseUrl}/${userId}`);
}
},
createUser: async (data: CreateUserRequest): Promise<OperationResult<User>> => {
try {
const response = await httpClient.post<User>('/users', data);
return {
success: true,
data: response.data || undefined,
message: '创建用户成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '创建用户失败'
};
// 创建用户
async createUser(data: CreateUserRequest): Promise<OperationResult<User>> {
return httpClient.post<User>(this.baseUrl, data);
}
},
updateUser: async (userId: string, data: UpdateUserRequest): Promise<OperationResult<User>> => {
try {
const response = await httpClient.put<User>(`/users/${userId}`, data);
return {
success: true,
data: response.data || undefined,
message: '更新用户成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '更新用户失败'
};
// 更新用户
async updateUser(userId: string, data: UpdateUserRequest): Promise<OperationResult<User>> {
return httpClient.put<User>(`${this.baseUrl}/${userId}`, data);
}
},
updateUserRoles: async (userId: string, roles: string[]): Promise<OperationResult<User>> => {
try {
const response = await httpClient.put<User>(`/users/${userId}/roles`, { roles });
return {
success: true,
data: response.data || undefined,
message: '更新用户角色成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '更新用户角色失败'
};
// 更新用户角色
async updateUserRoles(userId: string, roles: string[]): Promise<OperationResult<User>> {
return httpClient.put<User>(`${this.baseUrl}/${userId}/roles`, { roles });
}
},
deleteUser: async (userId: string): Promise<OperationResult<void>> => {
try {
await httpClient.delete(`/users/${userId}`);
return {
success: true,
message: '删除用户成功'
};
} catch (error: any) {
return {
success: false,
message: error.response?.data?.message || '删除用户失败'
};
// 删除用户
async deleteUser(userId: string): Promise<OperationResult<boolean>> {
return httpClient.delete<boolean>(`${this.baseUrl}/${userId}`);
}
}
};
export const userService = new UserService();
Loading…
Cancel
Save