const { pool } = require('../config/database'); // @desc 获取系统设置 // @route GET /api/settings // @access Private/Admin const getSettings = async (req, res) => { try { const [settings] = await pool.query('SELECT * FROM settings WHERE id = 1'); if (settings.length === 0) { // 如果没有设置记录,创建默认设置 await pool.query(` INSERT INTO settings (id, site_name, admin_email) VALUES (1, '后台管理系统', 'admin@example.com') `); const [newSettings] = await pool.query('SELECT * FROM settings WHERE id = 1'); res.json(newSettings[0]); } else { res.json(settings[0]); } } catch (error) { console.error('获取系统设置失败:', error); res.status(500).json({ message: '服务器错误' }); } }; // @desc 更新系统设置 // @route PUT /api/settings // @access Private/Admin const updateSettings = async (req, res) => { try { const { siteName, adminEmail,adminTG } = req.body; await pool.query(` UPDATE settings SET site_name = ?, admin_email = ?, admin_tg = ? WHERE id = 1 `, [siteName, adminEmail,adminTG]); const [settings] = await pool.query('SELECT * FROM settings WHERE id = 1'); res.json(settings[0]); } catch (error) { console.error('更新系统设置失败:', error); res.status(500).json({ message: '服务器错误' }); } }; // @desc 更新密码 // @route PUT /api/settings/password // @access Private/Admin const updatePassword = async (req, res) => { try { const { currentPassword, newPassword } = req.body; const userId = req.user.id; // 验证当前密码 const [user] = await pool.query('SELECT * FROM users WHERE id = ?', [userId]); if (!user.length) { return res.status(404).json({ message: '用户不存在' }); } const isMatch = await require('../models/User').comparePassword(currentPassword, user[0].password); if (!isMatch) { return res.status(401).json({ message: '当前密码错误' }); } // 更新密码 const hashedPassword = await require('../models/User').updatePassword(userId,newPassword); // await pool.query('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, userId]); res.json({ message: '密码修改成功' }); } catch (error) { console.error('更新密码失败:', error); res.status(500).json({ message: '服务器错误' }); } }; module.exports = { getSettings, updateSettings, updatePassword };