81 lines
2.2 KiB
TypeScript
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);
|
|
};
|