diff --git a/.augment/rules/rules.md b/.augment/rules/rules.md
new file mode 100644
index 0000000..8e122c6
--- /dev/null
+++ b/.augment/rules/rules.md
@@ -0,0 +1,15 @@
+---
+type: "always_apply"
+---
+
+1.使用中文问回答所有问题;
+2.未经允许不可以删除任何文件;
+3.所有开发都必须遵循当前现有的项目规范;
+4.前端所有接口的访问尽可能走网关调用;
+5.为不同(local,dev,prod)环境创建单独的配置文件,可以在部署时通过参数选择要使用的配置文件;
+6.Controller层不允许写业务代码,业务代码写在service层中;
+7.除了特殊情况下的异常,一般情况下不需要try-catch,由全局异常处理机制处理
+8.所有Controller层接口定义要完整,入参使用request封装请求,出参是response封装出参,使用项目已有的Result做接口返回
+9.所有对项目的变更要遵循当前的项目现有规范
+10.禁止在新增的Controller层的路由前面添加/api
+11.与当前用户相关的接口,禁止直接传递用户id,需要后端根据当前登录用户,接口调用的token获取当前登录的用户信息
\ No newline at end of file
diff --git a/.env b/.env
deleted file mode 100644
index 0287730..0000000
--- a/.env
+++ /dev/null
@@ -1,18 +0,0 @@
-# 数据库配置
-MYSQL_ROOT_PASSWORD=EmotionMuseum2025*#
-MYSQL_DATABASE=emotion_museum
-MYSQL_USER=root
-MYSQL_PASSWORD=EmotionMuseum2025#
-
-# Redis配置
-REDIS_PASSWORD=
-
-# Nacos配置
-NACOS_AUTH_ENABLE=false
-
-# 应用配置
-SPRING_PROFILES_ACTIVE=docker
-TZ=Asia/Shanghai
-
-# Coze API配置 (与开发环境一致)
-COZE_API_TOKEN=pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO
diff --git a/.env.prod b/.env.prod
deleted file mode 100644
index b2beccc..0000000
--- a/.env.prod
+++ /dev/null
@@ -1,38 +0,0 @@
-# 情绪博物馆生产环境配置文件
-# 用于Docker Compose和部署脚本
-
-# 基础配置
-TZ=Asia/Shanghai
-APP_VERSION=1.0.0
-SPRING_PROFILES_ACTIVE=prod
-
-# 服务器配置
-SERVER_HOST=47.111.10.27
-SERVER_USER=root
-SERVER_IP=47.111.10.27
-
-# 数据库配置
-MYSQL_ROOT_PASSWORD=123456
-MYSQL_DATABASE=emotion_museum
-MYSQL_USER=emotion
-MYSQL_PASSWORD=EmotionDB2024!
-MYSQL_HOST=localhost
-MYSQL_PORT=3306
-
-# Redis配置
-REDIS_HOST=localhost
-REDIS_PORT=6379
-
-# Nacos配置
-NACOS_SERVER_ADDR=localhost:8848
-NACOS_AUTH_ENABLE=false
-
-# Coze API配置
-COZE_API_TOKEN=pat_GCR4qKzqpf90wMCvKsldMrB18KG3QsLDci65bZthssKsbLxu8X70BKYumleDcabO
-
-# 目录配置
-REMOTE_BASE_DIR=/data
-REMOTE_BUILDS_DIR=/data/builds
-REMOTE_WEB_DIR=/data/www/emotion-museum/web
-REMOTE_LOGS_DIR=/data/logs/emotion-museum
-REMOTE_PROGRAMS_DIR=/data/programs
diff --git a/.idea/AugmentWebviewStateStore.xml b/.idea/AugmentWebviewStateStore.xml
index 5c45b02..49d2460 100644
--- a/.idea/AugmentWebviewStateStore.xml
+++ b/.idea/AugmentWebviewStateStore.xml
@@ -3,7 +3,7 @@
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 234afca..60e9baa 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -16,40 +16,19 @@
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index ba94529..6a31e7e 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -13,5 +13,20 @@
$ProjectFileDir$
+
+ mysql.8
+ true
+ true
+ $PROJECT_DIR$/backend/emotion-websocket/src/main/resources/application-prod.yml
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://47.111.10.27:3306/?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT
+
+
+
+
+
+
+ $ProjectFileDir$
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index ae3bac1..c9d7e2c 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -3,6 +3,8 @@
+
+
@@ -19,6 +21,8 @@
+
+
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
index 91d7a08..59ac270 100644
--- a/.idea/sqldialects.xml
+++ b/.idea/sqldialects.xml
@@ -1,6 +1,7 @@
+
\ No newline at end of file
diff --git a/backend-single/deploy-server.sh b/backend-single/deploy-server.sh
new file mode 100755
index 0000000..58db44d
--- /dev/null
+++ b/backend-single/deploy-server.sh
@@ -0,0 +1,230 @@
+#!/bin/bash
+
+# 情绪博物馆后端服务部署脚本
+# 使用生产环境配置,日志保存到 /data/logs/emotion-museum/single
+
+set -e
+
+# 配置变量
+APP_NAME="emotion-museum-single"
+JAR_NAME="emotion-single-1.0.0.jar"
+JAR_PATH="./${JAR_NAME}"
+LOG_DIR="./logs/"
+PID_FILE="/tmp/${APP_NAME}.pid"
+JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/heapdump.hprof"
+
+# 颜色输出
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+# 日志函数
+log_info() {
+ echo -e "${GREEN}[INFO]${NC} $1"
+}
+
+log_warn() {
+ echo -e "${YELLOW}[WARN]${NC} $1"
+}
+
+log_error() {
+ echo -e "${RED}[ERROR]${NC} $1"
+}
+
+# 检查 jar 文件是否存在
+check_jar() {
+ if [ ! -f "$JAR_PATH" ]; then
+ log_error "JAR 文件不存在: $JAR_PATH"
+ log_info "请先执行打包命令: mvn clean package -Pprod"
+ exit 1
+ fi
+ log_info "JAR 文件检查通过: $JAR_PATH"
+}
+
+# 创建日志目录
+create_log_dir() {
+ if [ ! -d "$LOG_DIR" ]; then
+ log_info "创建日志目录: $LOG_DIR"
+ mkdir -p "$LOG_DIR"
+ fi
+}
+
+# 停止旧服务
+stop_service() {
+ if [ -f "$PID_FILE" ]; then
+ PID=$(cat "$PID_FILE")
+ if ps -p "$PID" > /dev/null 2>&1; then
+ log_info "停止旧服务 (PID: $PID)"
+ kill "$PID"
+
+ # 等待服务停止
+ for i in {1..30}; do
+ if ! ps -p "$PID" > /dev/null 2>&1; then
+ log_info "服务已停止"
+ break
+ fi
+ sleep 1
+ done
+
+ # 强制停止
+ if ps -p "$PID" > /dev/null 2>&1; then
+ log_warn "强制停止服务 (PID: $PID)"
+ kill -9 "$PID"
+ fi
+ else
+ log_warn "PID 文件存在但进程不存在,清理 PID 文件"
+ fi
+ rm -f "$PID_FILE"
+ else
+ log_info "没有找到 PID 文件,服务可能未运行"
+ fi
+}
+
+# 启动新服务
+start_service() {
+ log_info "启动新服务..."
+
+ # 启动命令
+ nohup java $JAVA_OPTS \
+ -Dspring.profiles.active=prod \
+ -Dlogging.file.path=$LOG_DIR \
+ -Dlogging.file.name=$LOG_DIR/application.log \
+ -jar "$JAR_PATH" \
+ > "$LOG_DIR/startup.log" 2>&1 &
+
+ # 保存 PID
+ echo $! > "$PID_FILE"
+
+ log_info "服务启动中,PID: $(cat $PID_FILE)"
+ log_info "启动日志: $LOG_DIR/startup.log"
+ log_info "应用日志: $LOG_DIR/application.log"
+}
+
+# 检查服务状态
+check_status() {
+ if [ -f "$PID_FILE" ]; then
+ PID=$(cat "$PID_FILE")
+ if ps -p "$PID" > /dev/null 2>&1; then
+ log_info "服务运行中 (PID: $PID)"
+ return 0
+ else
+ log_error "PID 文件存在但进程不存在"
+ return 1
+ fi
+ else
+ log_error "PID 文件不存在,服务未运行"
+ return 1
+ fi
+}
+
+# 等待服务启动
+wait_for_startup() {
+ log_info "等待服务启动..."
+ for i in {1..60}; do
+ if check_status > /dev/null 2>&1; then
+ # 检查端口是否监听(假设使用 8080 端口)
+ if netstat -tlnp 2>/dev/null | grep -q ":8080.*LISTEN"; then
+ log_info "服务启动成功!"
+ return 0
+ fi
+ fi
+ sleep 2
+ done
+
+ log_error "服务启动超时,请检查日志: $LOG_DIR/startup.log"
+ return 1
+}
+
+# 显示服务信息
+show_info() {
+ log_info "=== 服务信息 ==="
+ log_info "应用名称: $APP_NAME"
+ log_info "JAR 文件: $JAR_PATH"
+ log_info "日志目录: $LOG_DIR"
+ log_info "PID 文件: $PID_FILE"
+ log_info "Java 参数: $JAVA_OPTS"
+
+ if check_status > /dev/null 2>&1; then
+ PID=$(cat "$PID_FILE")
+ log_info "服务状态: 运行中 (PID: $PID)"
+
+ # 显示内存使用情况
+ if command -v jstat > /dev/null 2>&1; then
+ log_info "内存使用情况:"
+ jstat -gc "$PID" | head -2
+ fi
+ else
+ log_info "服务状态: 未运行"
+ fi
+}
+
+# 主函数
+main() {
+ log_info "开始部署 $APP_NAME 服务..."
+
+ # 检查 jar 文件
+ check_jar
+
+ # 创建日志目录
+ create_log_dir
+
+ # 停止旧服务
+ stop_service
+
+ # 启动新服务
+ start_service
+
+ # 等待启动
+ if wait_for_startup; then
+ log_info "部署成功!"
+ show_info
+ else
+ log_error "部署失败!"
+ exit 1
+ fi
+}
+
+# 处理命令行参数
+case "${1:-deploy}" in
+ "deploy")
+ main
+ ;;
+ "start")
+ check_jar
+ create_log_dir
+ start_service
+ wait_for_startup
+ ;;
+ "stop")
+ stop_service
+ ;;
+ "restart")
+ stop_service
+ sleep 2
+ check_jar
+ create_log_dir
+ start_service
+ wait_for_startup
+ ;;
+ "status")
+ show_info
+ ;;
+ "logs")
+ if [ -f "$LOG_DIR/application.log" ]; then
+ tail -f "$LOG_DIR/application.log"
+ else
+ log_error "日志文件不存在: $LOG_DIR/application.log"
+ fi
+ ;;
+ *)
+ echo "用法: $0 {deploy|start|stop|restart|status|logs}"
+ echo " deploy - 部署服务(默认)"
+ echo " start - 启动服务"
+ echo " stop - 停止服务"
+ echo " restart - 重启服务"
+ echo " status - 查看服务状态"
+ echo " logs - 查看实时日志"
+ exit 1
+ ;;
+esac
\ No newline at end of file
diff --git a/backend-single/deploy.sh b/backend-single/deploy.sh
index 98ec1aa..8596bb1 100755
--- a/backend-single/deploy.sh
+++ b/backend-single/deploy.sh
@@ -1,245 +1,4 @@
#!/bin/bash
-
-# 单体服务部署脚本
-# 作者: emotion-museum
-# 日期: 2025-07-21
-
set -e
-
-REMOTE_HOST="root@47.111.10.27"
-REMOTE_JAR_DIR="/data/builds"
-REMOTE_LOG_DIR="/data/logs/emotion-museum"
-SERVICE_NAME="emotion-single"
-JAR_FILE="target/emotion-single-1.0.0.jar"
-
-# 颜色输出
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-YELLOW='\033[1;33m'
-BLUE='\033[0;34m'
-NC='\033[0m'
-
-log_info() {
- echo -e "${BLUE}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
-}
-
-log_success() {
- echo -e "${GREEN}[SUCCESS]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
-}
-
-log_warning() {
- echo -e "${YELLOW}[WARNING]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
-}
-
-log_error() {
- echo -e "${RED}[ERROR]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
-}
-
-# 检查JAR文件
-check_jar() {
- log_info "检查JAR文件..."
- if [ ! -f "$JAR_FILE" ]; then
- log_error "JAR文件不存在: $JAR_FILE"
- log_info "请先运行: ./build.sh"
- exit 1
- fi
- log_success "JAR文件存在: $JAR_FILE"
-}
-
-# 检查SSH连接
-check_connection() {
- log_info "检查远程服务器连接..."
- if ssh -o ConnectTimeout=10 "$REMOTE_HOST" "echo 'SSH连接成功'" > /dev/null 2>&1; then
- log_success "远程服务器连接正常"
- else
- log_error "无法连接到远程服务器: $REMOTE_HOST"
- exit 1
- fi
-}
-
-# 停止旧的微服务
-stop_old_services() {
- log_info "停止旧的微服务..."
-
- ssh "$REMOTE_HOST" "
- echo '🛑 停止所有emotion相关的Java进程...'
-
- # 停止所有emotion相关的Java进程
- pkill -f 'emotion-.*\.jar' 2>/dev/null || echo '没有找到emotion相关进程'
-
- # 等待进程完全停止
- sleep 5
-
- # 检查是否还有残留进程
- REMAINING=\$(ps aux | grep -E 'emotion-.*\.jar' | grep -v grep | wc -l)
- if [ \$REMAINING -gt 0 ]; then
- echo '强制停止残留进程...'
- pkill -9 -f 'emotion-.*\.jar' 2>/dev/null || true
- sleep 3
- fi
-
- echo '✅ 旧服务停止完成'
- "
-
- log_success "旧的微服务已停止"
-}
-
-# 清理旧的部署文件
-cleanup_old_files() {
- log_info "清理旧的部署文件..."
-
- ssh "$REMOTE_HOST" "
- echo '🧹 清理旧的JAR文件...'
- rm -f $REMOTE_JAR_DIR/emotion-*.jar 2>/dev/null || true
-
- echo '🧹 清理旧的日志文件...'
- find $REMOTE_LOG_DIR -name '*.log' -mtime +7 -delete 2>/dev/null || true
-
- echo '✅ 清理完成'
- "
-
- log_success "旧的部署文件已清理"
-}
-
-# 创建必要目录
-create_directories() {
- log_info "创建必要目录..."
-
- ssh "$REMOTE_HOST" "
- mkdir -p $REMOTE_JAR_DIR
- mkdir -p $REMOTE_LOG_DIR
- mkdir -p /data/uploads/emotion-museum
-
- echo '✅ 目录创建完成'
- "
-
- log_success "必要目录已创建"
-}
-
-# 上传JAR文件
-upload_jar() {
- log_info "上传JAR文件..."
-
- scp "$JAR_FILE" "$REMOTE_HOST:$REMOTE_JAR_DIR/"
-
- # 验证上传
- REMOTE_SIZE=$(ssh "$REMOTE_HOST" "ls -lh $REMOTE_JAR_DIR/emotion-single-1.0.0.jar | awk '{print \$5}'")
- log_success "JAR文件上传成功 (远程大小: $REMOTE_SIZE)"
-}
-
-# 启动服务
-start_service() {
- log_info "启动单体服务..."
-
- ssh "$REMOTE_HOST" "
- cd $REMOTE_JAR_DIR
-
- echo '🚀 启动emotion-single服务...'
- nohup java -Xms512m -Xmx1024m \\
- -Dspring.profiles.active=prod \\
- -Dserver.port=8080 \\
- -jar emotion-single-1.0.0.jar \\
- > $REMOTE_LOG_DIR/emotion-single.log 2>&1 &
-
- echo '⏳ 等待服务启动...'
- sleep 15
-
- # 检查进程
- if pgrep -f emotion-single-1.0.0.jar > /dev/null; then
- echo '✅ 服务进程启动成功'
- else
- echo '❌ 服务进程启动失败'
- tail -20 $REMOTE_LOG_DIR/emotion-single.log
- exit 1
- fi
-
- # 检查端口
- if netstat -tlnp | grep :8080 > /dev/null; then
- echo '✅ 服务端口8080正在监听'
- else
- echo '⚠️ 服务端口8080未监听,可能还在启动中'
- fi
- "
-
- log_success "单体服务启动完成"
-}
-
-# 健康检查
-health_check() {
- log_info "执行健康检查..."
-
- # 等待服务完全启动
- sleep 10
-
- # 检查健康端点
- if curl -f -s "http://47.111.10.27:8080/api/health" > /dev/null; then
- log_success "✅ 健康检查通过: http://47.111.10.27:8080/api/health"
- else
- log_warning "⚠️ 健康检查失败,查看日志..."
- ssh "$REMOTE_HOST" "tail -20 $REMOTE_LOG_DIR/emotion-single.log"
- fi
-}
-
-# 显示服务状态
-show_status() {
- log_info "显示服务状态..."
-
- ssh "$REMOTE_HOST" "
- echo '📊 服务状态:'
- echo '=================='
-
- # 检查进程
- echo -n 'emotion-single进程: '
- if pgrep -f emotion-single-1.0.0.jar > /dev/null; then
- echo '✅ 运行中'
- ps aux | grep emotion-single-1.0.0.jar | grep -v grep | head -1
- else
- echo '❌ 未运行'
- fi
-
- # 检查端口
- echo -n 'emotion-single端口(8080): '
- if netstat -tlnp | grep :8080 > /dev/null; then
- echo '✅ 监听中'
- else
- echo '❌ 未监听'
- fi
-
- echo ''
- echo '📋 访问地址:'
- echo ' 健康检查: http://47.111.10.27:8080/api/health'
- echo ' 前端页面: http://47.111.10.27/emotion/happy/'
- "
-
- log_success "服务状态检查完成"
-}
-
-# 主函数
-main() {
- log_info "🚀 开始部署emotion-single服务..."
-
- check_jar
- check_connection
- stop_old_services
- cleanup_old_files
- create_directories
- upload_jar
- start_service
- health_check
- show_status
-
- log_success "🎉 部署完成!"
- echo ""
- echo "📋 部署结果:"
- echo " ✅ 单体服务已启动"
- echo " ✅ 旧的微服务已清理"
- echo " ✅ 服务正常运行"
- echo ""
- echo "🔧 下一步:"
- echo " 1. 访问前端: http://47.111.10.27/emotion/happy/"
- echo " 2. 测试API: http://47.111.10.27:8080/api/health"
- echo " 3. 查看日志: ssh $REMOTE_HOST 'tail -f $REMOTE_LOG_DIR/emotion-single.log'"
-}
-
-# 执行主函数
-main "$@"
+mvn clean package -Pprod
+echo "后端已打包,target 目录下的 jar 包可部署到服务器"
diff --git a/backend-single/pom.xml b/backend-single/pom.xml
index b3fb2cf..f7d8fc4 100644
--- a/backend-single/pom.xml
+++ b/backend-single/pom.xml
@@ -179,10 +179,10 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ 3.11.0
- 8
- 8
+ 17
+ 17
UTF-8
diff --git a/backend-single/src/main/java/com/emotion/controller/EmotionRecordController.java b/backend-single/src/main/java/com/emotion/controller/EmotionRecordController.java
index 7453678..55fd466 100644
--- a/backend-single/src/main/java/com/emotion/controller/EmotionRecordController.java
+++ b/backend-single/src/main/java/com/emotion/controller/EmotionRecordController.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.emotion.common.Result;
import com.emotion.entity.EmotionRecord;
import com.emotion.service.EmotionRecordService;
+import com.emotion.util.CurrentUserUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -11,7 +12,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
@@ -23,7 +23,7 @@ import java.util.*;
* @date 2025-07-22
*/
@RestController
-@RequestMapping("/api/emotion-records")
+@RequestMapping("/emotion-records")
@Tag(name = "情绪记录管理", description = "用户情绪记录的增删改查功能")
public class EmotionRecordController {
@@ -64,16 +64,18 @@ public class EmotionRecordController {
/**
* 获取用户情绪记录列表
*/
- @Operation(summary = "获取用户情绪记录列表", description = "分页获取指定用户的情绪记录,按创建时间倒序")
- @GetMapping("/user/{userId}")
+ @Operation(summary = "获取用户情绪记录列表", description = "分页获取当前用户的情绪记录,按创建时间倒序")
+ @GetMapping("/user")
public Result> getRecordList(
- @Parameter(description = "用户ID") @PathVariable String userId,
@Parameter(description = "页码,从1开始") @RequestParam(defaultValue = "1") Integer current,
@Parameter(description = "每页大小") @RequestParam(defaultValue = "10") Integer size) {
- log.info("获取用户情绪记录列表: userId={}, current={}, size={}", userId, current, size);
-
try {
+ // 从上下文中获取当前用户ID
+ String userId = CurrentUserUtil.requireCurrentUserId();
+
+ log.info("获取用户情绪记录列表: userId={}, current={}, size={}", userId, current, size);
+
IPage page = emotionRecordService.getByUserIdWithPage(userId, current, size);
log.info("获取用户情绪记录成功: userId={}, total={}, records={}",
@@ -81,12 +83,44 @@ public class EmotionRecordController {
return Result.success(page);
+ } catch (IllegalStateException e) {
+ log.warn("用户认证失败: {}", e.getMessage());
+ return Result.error(e.getMessage());
} catch (Exception e) {
- log.error("获取用户情绪记录失败: userId={}", userId, e);
+ log.error("获取用户情绪记录失败", e);
return Result.error("获取情绪记录失败: " + e.getMessage());
}
}
+ /**
+ * 获取用户最近情绪记录
+ */
+ @Operation(summary = "获取用户最近情绪记录", description = "获取当前用户最近的情绪记录列表")
+ @GetMapping("/user/recent")
+ public Result> getRecentRecords(
+ @Parameter(description = "限制数量") @RequestParam(defaultValue = "5") Integer limit) {
+
+ try {
+ // 从上下文中获取当前用户ID
+ String userId = CurrentUserUtil.requireCurrentUserId();
+
+ log.info("获取用户最近情绪记录: userId={}, limit={}", userId, limit);
+
+ List records = emotionRecordService.getRecentByUserId(userId, limit);
+
+ log.info("获取用户最近情绪记录成功: userId={}, records={}", userId, records.size());
+
+ return Result.success(records);
+
+ } catch (IllegalStateException e) {
+ log.warn("用户认证失败: {}", e.getMessage());
+ return Result.error(e.getMessage());
+ } catch (Exception e) {
+ log.error("获取用户最近情绪记录失败", e);
+ return Result.error("获取最近记录失败: " + e.getMessage());
+ }
+ }
+
/**
* 获取情绪记录详情
*/
diff --git a/backend-single/src/main/java/com/emotion/controller/EmotionSummaryController.java b/backend-single/src/main/java/com/emotion/controller/EmotionSummaryController.java
index 4e7c5dc..64ba69e 100644
--- a/backend-single/src/main/java/com/emotion/controller/EmotionSummaryController.java
+++ b/backend-single/src/main/java/com/emotion/controller/EmotionSummaryController.java
@@ -2,8 +2,8 @@ package com.emotion.controller;
import com.emotion.common.Result;
import com.emotion.service.AIChatService;
+import com.emotion.util.CurrentUserUtil;
import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,13 +13,13 @@ import java.util.Map;
/**
* 情绪总结控制器
- *
+ *
* @author emotion-museum
* @date 2025-07-25
*/
@Slf4j
@RestController
-@RequestMapping("/api/emotion-summary")
+@RequestMapping("/emotion-summary")
@Tag(name = "情绪总结管理", description = "用户情绪记录总结和分析功能")
public class EmotionSummaryController {
@@ -27,39 +27,46 @@ public class EmotionSummaryController {
private AIChatService aiChatService;
@Operation(summary = "生成用户当天的情绪记录总结", description = "基于用户当天的聊天记录生成情绪分析和记录")
- @PostMapping("/generate/{userId}")
- public Result