57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
|
const express = require('express');
|
||
|
const router = express.Router();
|
||
|
const db = require('../utils/db');
|
||
|
const auth = require('../middleware/auth');
|
||
|
const checkPermission = require('../middleware/checkPermission');
|
||
|
|
||
|
// 获取所有设置
|
||
|
router.get('/', async (req, res) => {
|
||
|
try {
|
||
|
const [settings] = await db.query('SELECT * FROM system_settings');
|
||
|
const formattedSettings = settings.reduce((acc, setting) => {
|
||
|
if (!acc[setting.category]) {
|
||
|
acc[setting.category] = {};
|
||
|
}
|
||
|
acc[setting.category][setting.key] = {
|
||
|
value: setting.value,
|
||
|
description: setting.description
|
||
|
};
|
||
|
return acc;
|
||
|
}, {});
|
||
|
res.json(formattedSettings);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ message: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// 获取指定类别的设置
|
||
|
router.get('/:category', async (req, res) => {
|
||
|
try {
|
||
|
const [settings] = await db.query(
|
||
|
'SELECT * FROM system_settings WHERE category = ?',
|
||
|
[req.params.category]
|
||
|
);
|
||
|
res.json(settings);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ message: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// 更新设置(需要管理员权限)
|
||
|
router.put('/:category/:key', auth, checkPermission('system:manage'), async (req, res) => {
|
||
|
try {
|
||
|
const { category, key } = req.params;
|
||
|
const { value } = req.body;
|
||
|
|
||
|
await db.query(
|
||
|
'UPDATE system_settings SET value = ? WHERE category = ? AND `key` = ?',
|
||
|
[value, category, key]
|
||
|
);
|
||
|
|
||
|
res.json({ message: '设置更新成功' });
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ message: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = router;
|