feat: add user management API service with pagination support

This commit is contained in:
张翔
2026-03-20 07:58:19 +08:00
parent 738dd58e9c
commit cf49e2f2d1
+84
View File
@@ -0,0 +1,84 @@
import request from '@/utils/request'
export interface User {
id: number
username: string
nickname: string
email: string
phone: string
avatar: string
status: 'ACTIVE' | 'INACTIVE' | 'LOCKED'
roles: string[]
createdAt: string
updatedAt: string
}
export interface CreateUserRequest {
username: string
password: string
nickname: string
email: string
phone: string
roles: string[]
}
export interface UpdateUserRequest {
nickname?: string
email?: string
phone?: string
avatar?: string
status?: 'ACTIVE' | 'INACTIVE' | 'LOCKED'
roles?: string[]
}
export interface UserPageRequest {
page: number
size: number
username?: string
nickname?: string
status?: string
sortBy?: string
sortOrder?: 'asc' | 'desc'
}
export interface PageResponse<T> {
content: T[]
totalElements: number
totalPages: number
size: number
number: number
first: boolean
last: boolean
}
export const userApi = {
getAll: () =>
request.get<User[]>('/users'),
getPage: (params: UserPageRequest) =>
request.get<PageResponse<User>>('/users/page', { params }),
getById: (id: number) =>
request.get<User>(`/users/${id}`),
create: (data: CreateUserRequest) =>
request.post<User>('/users', data),
update: (id: number, data: UpdateUserRequest) =>
request.put<User>(`/users/${id}`, data),
delete: (id: number) =>
request.delete<void>(`/users/${id}`),
batchDelete: (ids: number[]) =>
request.post<void>('/users/batch-delete', { ids }),
resetPassword: (id: number) =>
request.post<void>(`/users/${id}/reset-password`),
updateStatus: (id: number, status: 'ACTIVE' | 'INACTIVE' | 'LOCKED') =>
request.put<void>(`/users/${id}/status`, { status }),
assignRoles: (id: number, roleIds: number[]) =>
request.post<void>(`/users/${id}/roles`, { roleIds }),
}