const express = require('express'); const { query, getRow } = require('../db'); const { authenticate, requireRole } = require('../middleware/auth'); const router = express.Router(); router.get('/email-templates', authenticate, requireRole('owner','admin'), async (req, res) => { res.json(await query('SELECT * FROM email_templates ORDER BY id')); }); router.get('/email-templates/:code', authenticate, requireRole('owner','admin'), async (req, res) => { const t = await getRow('SELECT * FROM email_templates WHERE code = ?', [req.params.code]); if (!t) return res.status(404).json({ error: '模板不存在' }); res.json(t); }); router.put('/email-templates/:code', authenticate, requireRole('owner','admin'), async (req, res) => { const { subject, body } = req.body; if (!subject||!body) return res.status(400).json({ error: '标题和内容不能为空' }); const t = await getRow('SELECT * FROM email_templates WHERE code = ?', [req.params.code]); if (!t) return res.status(404).json({ error: '模板不存在' }); await query('UPDATE email_templates SET subject = ?, body = ? WHERE code = ?', [subject, body, req.params.code]); await query("INSERT INTO audit_logs(user_id, username, action, entity_type, entity_id, details) VALUES (?,?,?,?,?,?)", [req.user.id, req.user.username, 'update_email_template', 'email_template', t.id, `更新模板: ${t.name}`]); res.json({ message: '模板更新成功' }); }); router.get('/settings', authenticate, requireRole('owner','admin'), async (req, res) => { const rows = await query('SELECT k, v, label FROM settings ORDER BY k'); const map = {}; for (const r of rows) map[r.k] = { value: r.v, label: r.label }; res.json(map); }); router.put('/settings', authenticate, requireRole('owner','admin'), async (req, res) => { const updates = req.body; if (!updates||typeof updates!=='object') return res.status(400).json({ error: '无效数据' }); for (const [key, val] of Object.entries(updates)) { const v = typeof val === 'object' ? val.value : String(val); const l = typeof val === 'object' ? val.label : null; await query("INSERT INTO settings(k, v, label) VALUES (?,?,?) ON DUPLICATE KEY UPDATE v = VALUES(v)", [key, v, l]); } await query("INSERT INTO audit_logs(user_id, username, action, entity_type, entity_id, details) VALUES (?,?,?,?,?,?)", [req.user.id, req.user.username, 'update_settings', 'settings', 0, '更新系统设置']); res.json({ message: '设置已保存' }); }); module.exports = router;