rtc_web/src/api/user.ts
2026-01-29 10:41:39 +08:00

81 lines
2.2 KiB
TypeScript

import request from './request';
import type { ApiResponse, PaginatedResponse } from './request';
// App用户类型
export interface AppUser {
id: number;
phone: string;
nickname: string;
avatar: string;
is_active: boolean;
spirit_count: number;
device_count: number;
created_at: string;
updated_at: string;
}
// 管理员用户类型
export interface AdminUser {
id: number;
username: string;
name: string;
email: string;
phone: string;
role: 'super_admin' | 'admin' | 'operator';
is_active: boolean;
last_login: string;
created_at: string;
}
// 获取App用户列表
export const getAppUsers = (params?: {
page?: number;
page_size?: number;
phone?: string;
nickname?: string;
}) => {
return request.get<unknown, ApiResponse<PaginatedResponse<AppUser>>>('/api/admin/users/', { params });
};
// 获取App用户详情
export const getAppUser = (id: number) => {
return request.get<unknown, ApiResponse<AppUser>>(`/api/admin/users/${id}/`);
};
// 切换App用户状态
export const toggleAppUserStatus = (id: number) => {
return request.post<unknown, ApiResponse<AppUser>>(`/api/admin/users/${id}/toggle-status/`);
};
// 获取管理员列表
export const getAdminUsers = (params?: { page?: number; page_size?: number }) => {
return request.get<unknown, ApiResponse<PaginatedResponse<AdminUser>>>('/api/admin/admins/', { params });
};
// 获取管理员详情
export const getAdminUser = (id: number) => {
return request.get<unknown, ApiResponse<AdminUser>>(`/api/admin/admins/${id}/`);
};
// 创建管理员
export const createAdminUser = (data: {
username: string;
password: string;
name?: string;
email?: string;
phone?: string;
role?: string;
}) => {
return request.post<unknown, ApiResponse<AdminUser>>('/api/admin/admins/', data);
};
// 切换管理员状态
export const toggleAdminStatus = (id: number) => {
return request.post<unknown, ApiResponse<AdminUser>>(`/api/admin/admins/${id}/toggle-status/`);
};
// 重置管理员密码
export const resetAdminPassword = (id: number, data: { new_password: string }) => {
return request.post<unknown, ApiResponse<null>>(`/api/admin/admins/${id}/reset-password/`, data);
};