diff --git a/novalon-manage-web/src/api/user.api.ts b/novalon-manage-web/src/api/user.api.ts new file mode 100644 index 0000000..cf329f6 --- /dev/null +++ b/novalon-manage-web/src/api/user.api.ts @@ -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 { + content: T[] + totalElements: number + totalPages: number + size: number + number: number + first: boolean + last: boolean +} + +export const userApi = { + getAll: () => + request.get('/users'), + + getPage: (params: UserPageRequest) => + request.get>('/users/page', { params }), + + getById: (id: number) => + request.get(`/users/${id}`), + + create: (data: CreateUserRequest) => + request.post('/users', data), + + update: (id: number, data: UpdateUserRequest) => + request.put(`/users/${id}`, data), + + delete: (id: number) => + request.delete(`/users/${id}`), + + batchDelete: (ids: number[]) => + request.post('/users/batch-delete', { ids }), + + resetPassword: (id: number) => + request.post(`/users/${id}/reset-password`), + + updateStatus: (id: number, status: 'ACTIVE' | 'INACTIVE' | 'LOCKED') => + request.put(`/users/${id}/status`, { status }), + + assignRoles: (id: number, roleIds: number[]) => + request.post(`/users/${id}/roles`, { roleIds }), +}