settingsController.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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)
  12. VALUES (1, '后台管理系统', 'admin@example.com')
  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,adminTG } = req.body;
  30. await pool.query(`
  31. UPDATE settings
  32. SET site_name = ?,
  33. admin_email = ?,
  34. admin_tg = ?
  35. WHERE id = 1
  36. `, [siteName, adminEmail,adminTG]);
  37. const [settings] = await pool.query('SELECT * FROM settings WHERE id = 1');
  38. res.json(settings[0]);
  39. } catch (error) {
  40. console.error('更新系统设置失败:', error);
  41. res.status(500).json({ message: '服务器错误' });
  42. }
  43. };
  44. // @desc 更新密码
  45. // @route PUT /api/settings/password
  46. // @access Private/Admin
  47. const updatePassword = async (req, res) => {
  48. try {
  49. const { currentPassword, newPassword } = req.body;
  50. const userId = req.user.id;
  51. // 验证当前密码
  52. const [user] = await pool.query('SELECT * FROM users WHERE id = ?', [userId]);
  53. if (!user.length) {
  54. return res.status(404).json({ message: '用户不存在' });
  55. }
  56. const isMatch = await require('../models/User').comparePassword(currentPassword, user[0].password);
  57. if (!isMatch) {
  58. return res.status(401).json({ message: '当前密码错误' });
  59. }
  60. // 更新密码
  61. const hashedPassword = await require('../models/User').updatePassword(userId,newPassword);
  62. // await pool.query('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, userId]);
  63. res.json({ message: '密码修改成功' });
  64. } catch (error) {
  65. console.error('更新密码失败:', error);
  66. res.status(500).json({ message: '服务器错误' });
  67. }
  68. };
  69. module.exports = {
  70. getSettings,
  71. updateSettings,
  72. updatePassword
  73. };