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, deposit_fee_rate, withdrawal_fee_rate)
                VALUES (1, '后台管理系统', 'admin@example.com', 0.01, 0.01)
            `);
            
            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 } = req.body;
        
        await pool.query(`
            UPDATE settings 
            SET site_name = ?, 
                admin_email = ?
            WHERE id = 1
        `, [siteName, adminEmail]);
        
        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').hashPassword(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
};