mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-05-22 00:30:14 +08:00
feat(userManagement): add user detail view and filtering capabilities
This commit is contained in:
@@ -67,7 +67,8 @@ export {
|
||||
createUser,
|
||||
updateUser,
|
||||
deleteUser,
|
||||
batchDeleteUsers
|
||||
batchDeleteUsers,
|
||||
getUserDetail
|
||||
} from './userManagementApi';
|
||||
|
||||
// 导出PictureManagement API
|
||||
|
||||
@@ -285,3 +285,33 @@ export interface BindAccountRequest {
|
||||
bindType: BindType;
|
||||
thirdPartyUserId: string;
|
||||
}
|
||||
|
||||
// 用户筛选请求参数
|
||||
export interface UserFilterRequest {
|
||||
page?: number;
|
||||
pageSize?: number;
|
||||
searchQuery?: string;
|
||||
role?: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
}
|
||||
|
||||
// 用户统计信息
|
||||
export interface UserStatistics {
|
||||
totalPictures: number;
|
||||
totalAlbums: number;
|
||||
totalFavorites: number;
|
||||
favoriteReceivedCount: number;
|
||||
diskUsageMB: number;
|
||||
accountAgeDays: number;
|
||||
}
|
||||
|
||||
// 用户详情响应
|
||||
export interface UserDetailResponse {
|
||||
id: number;
|
||||
userName: string;
|
||||
email: string;
|
||||
role: string;
|
||||
createdAt: Date;
|
||||
statistics: UserStatistics;
|
||||
}
|
||||
|
||||
@@ -5,15 +5,28 @@ import {
|
||||
type UserResponse,
|
||||
type CreateUserRequest,
|
||||
type AdminUpdateUserRequest,
|
||||
type BatchDeleteResult
|
||||
type BatchDeleteResult,
|
||||
type UserFilterRequest,
|
||||
type UserDetailResponse
|
||||
} from './types';
|
||||
|
||||
// 获取用户列表
|
||||
export const getUsers = async (
|
||||
page: number = 1,
|
||||
pageSize: number = 10
|
||||
filters: UserFilterRequest = {}
|
||||
): Promise<PaginatedResult<UserResponse>> => {
|
||||
const response = await fetchApi(`/management/user/get_users?page=${page}&pageSize=${pageSize}`);
|
||||
const { page = 1, pageSize = 10, searchQuery, role, startDate, endDate } = filters;
|
||||
|
||||
const params = new URLSearchParams({
|
||||
page: page.toString(),
|
||||
pageSize: pageSize.toString(),
|
||||
});
|
||||
|
||||
if (searchQuery) params.append('searchQuery', searchQuery);
|
||||
if (role) params.append('role', role);
|
||||
if (startDate) params.append('startDate', startDate);
|
||||
if (endDate) params.append('endDate', endDate);
|
||||
|
||||
const response = await fetchApi(`/management/user/get_users?${params.toString()}`);
|
||||
return response as PaginatedResult<UserResponse>;
|
||||
};
|
||||
|
||||
@@ -25,6 +38,14 @@ export const getUserById = async (id: number): Promise<BaseResult<UserResponse>>
|
||||
);
|
||||
};
|
||||
|
||||
// 根据ID获取用户详情
|
||||
export const getUserDetail = async (id: number): Promise<BaseResult<UserDetailResponse>> => {
|
||||
return fetchApi<UserDetailResponse>(
|
||||
`/management/user/get_user_detail/${id}`,
|
||||
{ method: 'GET' }
|
||||
);
|
||||
};
|
||||
|
||||
// 创建用户
|
||||
export const createUser = async (
|
||||
userData: CreateUserRequest
|
||||
|
||||
Reference in New Issue
Block a user