import pool from '../config/db.js'; // @desc 记录今日心情 // @route POST /api/moods // @access Private const recordMood = async (req, res) => { try { const { mood_value } = req.body; const userId = req.user.id; const today = new Date().toISOString().split('T')[0]; // 当前日期 // 验证心情值 if (mood_value < 1 || mood_value > 5) { return res.status(400).json({ message: '无效的心情值,必须在1-5之间' }); } // 检查今天是否已记录心情 const [existingMoods] = await pool.query( 'SELECT * FROM moods WHERE user_id = ? AND date = ?', [userId, today] ); if (existingMoods.length > 0) { // 更新今日心情 await pool.query( 'UPDATE moods SET mood_value = ? WHERE user_id = ? AND date = ?', [mood_value, userId, today] ); const [updatedMood] = await pool.query( 'SELECT * FROM moods WHERE user_id = ? AND date = ?', [userId, today] ); return res.json(updatedMood[0]); } // 记录新的心情 const [result] = await pool.query( 'INSERT INTO moods (user_id, date, mood_value) VALUES (?, ?, ?)', [userId, today, mood_value] ); if (result.insertId) { const [newMood] = await pool.query('SELECT * FROM moods WHERE id = ?', [result.insertId]); res.status(201).json(newMood[0]); } else { res.status(400).json({ message: '无效的心情数据' }); } } catch (error) { console.error(error); res.status(500).json({ message: '服务器错误' }); } }; // @desc 获取最近30天的心情记录 // @route GET /api/moods // @access Private const getMoodHistory = async (req, res) => { try { const userId = req.user.id; // 计算30天前的日期 const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); const thirtyDaysAgoStr = thirtyDaysAgo.toISOString().split('T')[0]; // 获取最近30天的心情记录 const [moods] = await pool.query( 'SELECT * FROM moods WHERE user_id = ? AND date >= ? ORDER BY date', [userId, thirtyDaysAgoStr] ); res.json(moods); } catch (error) { console.error(error); res.status(500).json({ message: '服务器错误' }); } }; export { recordMood, getMoodHistory };