feat: add audit logs and system configs
This commit is contained in:
46
frontend/superadmin/src/service/AuditService.js
Normal file
46
frontend/superadmin/src/service/AuditService.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { requestJson } from './apiClient';
|
||||
|
||||
function normalizeItems(items) {
|
||||
if (Array.isArray(items)) return items;
|
||||
if (items && typeof items === 'object') return [items];
|
||||
return [];
|
||||
}
|
||||
|
||||
export const AuditService = {
|
||||
async listAuditLogs({ page, limit, id, tenant_id, tenant_code, tenant_name, operator_id, operator_name, action, target_id, keyword, created_at_from, created_at_to, sortField, sortOrder } = {}) {
|
||||
const iso = (d) => {
|
||||
if (!d) return undefined;
|
||||
const date = d instanceof Date ? d : new Date(d);
|
||||
if (Number.isNaN(date.getTime())) return undefined;
|
||||
return date.toISOString();
|
||||
};
|
||||
|
||||
const query = {
|
||||
page,
|
||||
limit,
|
||||
id,
|
||||
tenant_id,
|
||||
tenant_code,
|
||||
tenant_name,
|
||||
operator_id,
|
||||
operator_name,
|
||||
action,
|
||||
target_id,
|
||||
keyword,
|
||||
created_at_from: iso(created_at_from),
|
||||
created_at_to: iso(created_at_to)
|
||||
};
|
||||
if (sortField && sortOrder) {
|
||||
if (sortOrder === 1) query.asc = sortField;
|
||||
if (sortOrder === -1) query.desc = sortField;
|
||||
}
|
||||
|
||||
const data = await requestJson('/super/v1/audit-logs', { query });
|
||||
return {
|
||||
page: data?.page ?? page ?? 1,
|
||||
limit: data?.limit ?? limit ?? 10,
|
||||
total: data?.total ?? 0,
|
||||
items: normalizeItems(data?.items)
|
||||
};
|
||||
}
|
||||
};
|
||||
60
frontend/superadmin/src/service/SystemConfigService.js
Normal file
60
frontend/superadmin/src/service/SystemConfigService.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import { requestJson } from './apiClient';
|
||||
|
||||
function normalizeItems(items) {
|
||||
if (Array.isArray(items)) return items;
|
||||
if (items && typeof items === 'object') return [items];
|
||||
return [];
|
||||
}
|
||||
|
||||
export const SystemConfigService = {
|
||||
async listConfigs({ page, limit, config_key, keyword, created_at_from, created_at_to, updated_at_from, updated_at_to, sortField, sortOrder } = {}) {
|
||||
const iso = (d) => {
|
||||
if (!d) return undefined;
|
||||
const date = d instanceof Date ? d : new Date(d);
|
||||
if (Number.isNaN(date.getTime())) return undefined;
|
||||
return date.toISOString();
|
||||
};
|
||||
|
||||
const query = {
|
||||
page,
|
||||
limit,
|
||||
config_key,
|
||||
keyword,
|
||||
created_at_from: iso(created_at_from),
|
||||
created_at_to: iso(created_at_to),
|
||||
updated_at_from: iso(updated_at_from),
|
||||
updated_at_to: iso(updated_at_to)
|
||||
};
|
||||
if (sortField && sortOrder) {
|
||||
if (sortOrder === 1) query.asc = sortField;
|
||||
if (sortOrder === -1) query.desc = sortField;
|
||||
}
|
||||
|
||||
const data = await requestJson('/super/v1/system-configs', { query });
|
||||
return {
|
||||
page: data?.page ?? page ?? 1,
|
||||
limit: data?.limit ?? limit ?? 10,
|
||||
total: data?.total ?? 0,
|
||||
items: normalizeItems(data?.items)
|
||||
};
|
||||
},
|
||||
async createConfig({ config_key, value, description } = {}) {
|
||||
return requestJson('/super/v1/system-configs', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
config_key,
|
||||
value,
|
||||
description
|
||||
}
|
||||
});
|
||||
},
|
||||
async updateConfig(id, { value, description } = {}) {
|
||||
return requestJson(`/super/v1/system-configs/${id}`, {
|
||||
method: 'PATCH',
|
||||
body: {
|
||||
value,
|
||||
description
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user