2026-03-17 22:07:19 +08:00
|
|
|
import { Request, Response } from 'express';
|
2026-03-25 13:46:26 +08:00
|
|
|
import { ConfigService } from '../../services/utils/ConfigService';
|
|
|
|
|
import { AuditService } from '../../services/utils/AuditService';
|
2026-03-17 22:07:19 +08:00
|
|
|
|
|
|
|
|
export class ConfigController {
|
|
|
|
|
static async getAll(req: Request, res: Response) {
|
|
|
|
|
try {
|
|
|
|
|
const configs = await ConfigService.getAllConfigs();
|
|
|
|
|
res.json({ success: true, data: configs });
|
|
|
|
|
} catch (err: any) {
|
|
|
|
|
res.status(500).json({ success: false, error: err.message });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static async update(req: Request, res: Response) {
|
|
|
|
|
const key = String(req.params.key);
|
|
|
|
|
const { isEnabled, value } = req.body;
|
|
|
|
|
const { tenantId, shopId, taskId, traceId, userId } = (req as any).traceContext;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const beforeSnapshot = await ConfigService.getConfig(key);
|
|
|
|
|
if (!beforeSnapshot) return res.status(404).json({ success: false, error: 'Config not found' });
|
|
|
|
|
|
|
|
|
|
await ConfigService.updateConfig(key, { isEnabled, value });
|
|
|
|
|
|
|
|
|
|
const afterSnapshot = await ConfigService.getConfig(key);
|
|
|
|
|
|
|
|
|
|
await AuditService.logDiff({
|
|
|
|
|
tenantId,
|
|
|
|
|
shopId,
|
|
|
|
|
taskId,
|
|
|
|
|
traceId,
|
|
|
|
|
userId,
|
|
|
|
|
module: 'CONFIG',
|
|
|
|
|
action: 'UPDATE_CONFIG',
|
|
|
|
|
resourceType: 'config',
|
|
|
|
|
resourceId: key,
|
|
|
|
|
beforeSnapshot,
|
|
|
|
|
afterSnapshot,
|
|
|
|
|
source: 'console'
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
res.json({ success: true });
|
|
|
|
|
} catch (err: any) {
|
|
|
|
|
res.status(500).json({ success: false, error: err.message });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static async getByKey(req: Request, res: Response) {
|
|
|
|
|
const key = String(req.params.key);
|
|
|
|
|
try {
|
|
|
|
|
const config = await ConfigService.getConfig(key);
|
|
|
|
|
if (!config) return res.status(404).json({ success: false, error: 'Config not found' });
|
|
|
|
|
res.json({ success: true, data: config });
|
|
|
|
|
} catch (err: any) {
|
|
|
|
|
res.status(500).json({ success: false, error: err.message });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|