Files
plates-server/src/mood-checkins
richarjiang ffc0cd1d13 feat: 更新心情打卡功能,优化用户信息处理
- 将用户身份信息从字符串类型改为AccessTokenPayload对象,增强代码可读性和安全性。
- 移除心情打卡DTO中的metadata字段,简化数据结构,提升性能。
- 更新心情打卡服务,去除不必要的metadata处理逻辑,优化数据存储。
2025-08-22 08:55:35 +08:00
..
2025-08-21 15:20:05 +08:00

心情打卡功能

功能概述

心情打卡功能允许用户记录每日的情绪状态,包括喜怒哀乐四种基本情绪类型,并可以添加强度评分和详细描述。

功能特性

1. 心情类型

  • 开心 (happy): 愉悦、满足的情绪
  • 心动 (excited): 因喜欢而心跳加速的情绪
  • 兴奋 (thrilled): 激动、充满活力的情绪
  • 平静 (calm): 宁静、安详的情绪
  • 焦虑 (anxious): 紧张、担忧的情绪
  • 难过 (sad): 悲伤、失落的情绪
  • 孤独 (lonely): 寂寞、孤单的情绪
  • 委屈 (wronged): 受到不公正对待的情绪
  • 生气 (angry): 愤怒、恼火的情绪
  • 心累 (tired): 精神疲惫、倦怠的情绪

2. 核心功能

  • 创建心情打卡记录
  • 更新已有心情记录
  • 删除心情记录(软删除)
  • 查看每日心情记录
  • 查看历史心情记录
  • 心情统计分析

3. 数据字段

  • moodType: 心情类型(必填)
  • intensity: 心情强度 1-10必填默认5
  • description: 心情描述(可选)
  • checkinDate: 打卡日期(可选,默认当天)
  • metadata: 扩展数据,如标签、触发事件等(可选)

API 接口

创建心情打卡

POST /mood-checkins

更新心情打卡

PUT /mood-checkins

删除心情打卡

DELETE /mood-checkins

获取每日心情

GET /mood-checkins/daily?date=2025-08-21

获取心情历史

GET /mood-checkins/history?startDate=2025-08-01&endDate=2025-08-31&moodType=joy

获取心情统计

GET /mood-checkins/statistics?startDate=2025-08-01&endDate=2025-08-31

数据库设计

表结构

  • 表名: t_mood_checkins
  • 主键: id (UUID)
  • 外键: user_id (关联用户表)
  • 索引: 用户ID、打卡日期、心情类型等

约束条件

  • 同一用户同一天同一心情类型只能有一条记录(自动更新)
  • 心情强度范围: 1-10
  • 支持软删除

业务逻辑

1. 创建逻辑

  • 检查当天是否已有相同心情类型的记录
  • 如果存在则更新,不存在则创建新记录
  • 记录活动日志

2. 统计功能

  • 总打卡次数
  • 平均心情强度
  • 各心情类型分布
  • 最频繁的心情类型

3. 权限控制

  • 用户只能操作自己的心情记录
  • 需要JWT认证
  • 支持活动日志记录

使用示例

创建心情打卡

{
  "moodType": "joy",
  "intensity": 8,
  "description": "今天工作顺利,心情很好",
  "metadata": {
    "tags": ["工作", "成就感"],
    "trigger": "完成重要项目"
  }
}

统计数据响应

{
  "code": 200,
  "message": "success",
  "data": {
    "totalCheckins": 30,
    "averageIntensity": 6.8,
    "moodDistribution": {
      "happy": 8,
      "excited": 5,
      "thrilled": 4,
      "calm": 6,
      "anxious": 3,
      "sad": 2,
      "lonely": 1,
      "wronged": 0,
      "angry": 1,
      "tired": 0
    },
    "mostFrequentMood": "happy"
  }
}

扩展功能建议

  1. 心情趋势分析: 基于历史数据分析心情变化趋势
  2. 心情提醒: 定时提醒用户进行心情打卡
  3. 心情分享: 允许用户分享心情状态
  4. 心情建议: 基于心情状态提供改善建议
  5. 数据导出: 支持心情数据导出功能