settingsController.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. const { pool } = require('../config/database');
  2. // @desc 获取系统设置
  3. // @route GET /api/settings
  4. // @access Private/Admin
  5. const getSettings = async (req, res) => {
  6. try {
  7. const [settings] = await pool.query('SELECT * FROM settings WHERE id = 1');
  8. if (settings.length === 0) {
  9. // 如果没有设置记录,创建默认设置
  10. await pool.query(`
  11. INSERT INTO settings (id, site_name, admin_email, deposit_fee_rate, withdrawal_fee_rate)
  12. VALUES (1, '后台管理系统', 'admin@example.com', 0.01, 0.01)
  13. `);
  14. const [newSettings] = await pool.query('SELECT * FROM settings WHERE id = 1');
  15. res.json(newSettings[0]);
  16. } else {
  17. res.json(settings[0]);
  18. }
  19. } catch (error) {
  20. console.error('获取系统设置失败:', error);
  21. res.status(500).json({ message: '服务器错误' });
  22. }
  23. };
  24. // @desc 更新系统设置
  25. // @route PUT /api/settings
  26. // @access Private/Admin
  27. const updateSettings = async (req, res) => {
  28. try {
  29. const { siteName, adminEmail } = req.body;
  30. await pool.query(`
  31. UPDATE settings
  32. SET site_name = ?,
  33. admin_email = ?
  34. WHERE id = 1
  35. `, [siteName, adminEmail]);
  36. const [settings] = await pool.query('SELECT * FROM settings WHERE id = 1');
  37. res.json(settings[0]);
  38. } catch (error) {
  39. console.error('更新系统设置失败:', error);
  40. res.status(500).json({ message: '服务器错误' });
  41. }
  42. };
  43. // @desc 更新密码
  44. // @route PUT /api/settings/password
  45. // @access Private/Admin
  46. const updatePassword = async (req, res) => {
  47. try {
  48. const { currentPassword, newPassword } = req.body;
  49. const userId = req.user.id;
  50. // 验证当前密码
  51. const [user] = await pool.query('SELECT * FROM users WHERE id = ?', [userId]);
  52. if (!user.length) {
  53. return res.status(404).json({ message: '用户不存在' });
  54. }
  55. const isMatch = await require('../models/User').comparePassword(currentPassword, user[0].password);
  56. if (!isMatch) {
  57. return res.status(401).json({ message: '当前密码错误' });
  58. }
  59. // 更新密码
  60. const hashedPassword = await require('../models/User').hashPassword(newPassword);
  61. await pool.query('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, userId]);
  62. res.json({ message: '密码修改成功' });
  63. } catch (error) {
  64. console.error('更新密码失败:', error);
  65. res.status(500).json({ message: '服务器错误' });
  66. }
  67. };
  68. module.exports = {
  69. getSettings,
  70. updateSettings,
  71. updatePassword
  72. };