2026-05-02 13:02:57 +08:00

66 lines
2.4 KiB
TypeScript

import { apiRequest } from "@/shared/api/request";
import { API_ENDPOINTS, API_OPERATIONS, apiEndpointPath } from "@/shared/api/generated/endpoints";
import type {
AdminUserDto,
ApiPage,
CreateUserResultDto,
EntityId,
PageQuery,
ResetPasswordResultDto,
UserFormPayload,
UserStatus,
UserUpdatePayload
} from "@/shared/api/types";
export function listUsers(query?: PageQuery): Promise<ApiPage<AdminUserDto>> {
return apiRequest<ApiPage<AdminUserDto>>(apiEndpointPath(API_OPERATIONS.listUsers), { query });
}
export function getUser(id: EntityId): Promise<AdminUserDto> {
return apiRequest<AdminUserDto>(apiEndpointPath(API_OPERATIONS.getUser, { id }));
}
export function createUser(payload: UserFormPayload): Promise<CreateUserResultDto> {
const endpoint = API_ENDPOINTS.createUser;
return apiRequest<CreateUserResultDto, UserFormPayload>(apiEndpointPath(API_OPERATIONS.createUser), {
body: payload,
method: endpoint.method
});
}
export function updateUser(id: EntityId, payload: UserUpdatePayload): Promise<AdminUserDto> {
const endpoint = API_ENDPOINTS.updateUser;
return apiRequest<AdminUserDto, UserUpdatePayload>(apiEndpointPath(API_OPERATIONS.updateUser, { id }), {
body: payload,
method: endpoint.method
});
}
export function updateUserStatus(id: EntityId, status: UserStatus): Promise<AdminUserDto> {
const endpoint = API_ENDPOINTS.updateUserStatus;
return apiRequest<AdminUserDto, { status: UserStatus }>(apiEndpointPath(API_OPERATIONS.updateUserStatus, { id }), {
body: { status },
method: endpoint.method
});
}
export function resetUserPassword(id: EntityId, password?: string): Promise<ResetPasswordResultDto> {
const endpoint = API_ENDPOINTS.resetUserPassword;
return apiRequest<ResetPasswordResultDto, { password?: string }>(apiEndpointPath(API_OPERATIONS.resetUserPassword, { id }), {
body: { password },
method: endpoint.method
});
}
export function batchUpdateUserStatus(ids: EntityId[], status: UserStatus): Promise<unknown> {
const endpoint = API_ENDPOINTS.batchUpdateUserStatus;
return apiRequest<unknown, { ids: EntityId[]; status: UserStatus }>(apiEndpointPath(API_OPERATIONS.batchUpdateUserStatus), {
body: { ids, status },
method: endpoint.method
});
}
export function exportUsers(query?: PageQuery): Promise<Response> {
return apiRequest(apiEndpointPath(API_OPERATIONS.exportUsers), { query, raw: true });
}