feat: add user management API service with pagination support
This commit is contained in:
@@ -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 }),
|
||||
}
|
||||
Reference in New Issue
Block a user