feat(userManagement): add user detail view and filtering capabilities

This commit is contained in:
shiyu
2025-06-02 12:43:05 +08:00
parent 6243b9b62a
commit 686cc5fd11
11 changed files with 380 additions and 86 deletions

View File

@@ -67,7 +67,8 @@ export {
createUser,
updateUser,
deleteUser,
batchDeleteUsers
batchDeleteUsers,
getUserDetail
} from './userManagementApi';
// 导出PictureManagement API

View File

@@ -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;
}

View File

@@ -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