- 将用户身份信息从字符串类型改为AccessTokenPayload对象,增强代码可读性和安全性。 - 移除心情打卡DTO中的metadata字段,简化数据结构,提升性能。 - 更新心情打卡服务,去除不必要的metadata处理逻辑,优化数据存储。
心情打卡功能
功能概述
心情打卡功能允许用户记录每日的情绪状态,包括喜怒哀乐四种基本情绪类型,并可以添加强度评分和详细描述。
功能特性
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"
}
}
扩展功能建议
- 心情趋势分析: 基于历史数据分析心情变化趋势
- 心情提醒: 定时提醒用户进行心情打卡
- 心情分享: 允许用户分享心情状态
- 心情建议: 基于心情状态提供改善建议
- 数据导出: 支持心情数据导出功能