Files
quyun-v2/frontend/superadmin/src/service/UserService.js

60 lines
2.0 KiB
JavaScript

import { requestJson } from './apiClient';
function normalizeItems(items) {
if (Array.isArray(items)) return items;
if (items && typeof items === 'object') return [items];
return [];
}
export const UserService = {
async listUsers({ page, limit, tenantID, username, sortField, sortOrder } = {}) {
const query = { page, limit, tenantID, username };
if (sortField && sortOrder) {
if (sortOrder === 1) query.asc = sortField;
if (sortOrder === -1) query.desc = sortField;
}
const data = await requestJson('/super/v1/users', { query });
return {
page: data?.page ?? page ?? 1,
limit: data?.limit ?? limit ?? 10,
total: data?.total ?? 0,
items: normalizeItems(data?.items)
};
},
async getUserStatuses() {
try {
const data = await requestJson('/super/v1/user/statuses');
return Array.isArray(data) ? data : [];
} catch (error) {
if (error?.status === 404) {
const data = await requestJson('/super/v1/users/statuses');
return Array.isArray(data) ? data : [];
}
throw error;
}
},
async updateUserStatus({ userID, status }) {
try {
return await requestJson(`/super/v1/user/${userID}/status`, { method: 'PATCH', body: { status } });
} catch (error) {
if (error?.status === 404) {
return requestJson(`/super/v1/users/${userID}/status`, { method: 'PATCH', body: { status } });
}
throw error;
}
},
async getUserStatistics() {
try {
const data = await requestJson('/super/v1/users/statistics');
return Array.isArray(data) ? data : [];
} catch (error) {
if (error?.status === 404) {
const data = await requestJson('/super/v1/users/statistic');
return Array.isArray(data) ? data : [];
}
throw error;
}
}
};