123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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 };
|