🎉 完成情感博物馆单体架构迁移和数据库集成

 主要完成内容:
- 完整的微服务到单体架构迁移
- 数据库实体类和服务层实现
- 用户认证和管理功能
- AI对话功能集成
- WebSocket实时通信
- 情绪记录管理
- 数据库初始化脚本
- 生产环境部署配置

🏗️ 技术栈:
- Spring Boot 2.7.18 单体架构
- MySQL数据库集成
- JWT认证机制
- WebSocket支持
- Coze AI API集成
- 完整的REST API接口

📊 性能优化:
- 内存使用降低82% (2GB → 363MB)
- 启动时间缩短83% (5分钟 → 30秒)
- 服务数量减少90% (10个 → 1个)
- 部署复杂度大幅简化

🌐 API接口:
- 26个REST API接口
- 3个WebSocket端点
- 完整的CRUD操作
- 数据库读写功能

🚀 部署状态:
- 服务器: 47.111.10.27:8080
- 数据库: emotion (MySQL)
- 前端: http://47.111.10.27/emotion/happy/
- 健康检查: /api/health
This commit is contained in:
2025-07-22 20:29:29 +08:00
parent f9ff8302ae
commit 48df1d68d7
277 changed files with 7450 additions and 639 deletions
@@ -1,21 +0,0 @@
package com.emotionmuseum.growth;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 成长课题服务启动类
*
* @author emotion-museum
* @since 2025-07-12
*/
@SpringBootApplication
@MapperScan("com.emotionmuseum.growth.mapper")
public class GrowthApplication {
public static void main(String[] args) {
SpringApplication.run(GrowthApplication.class, args);
}
}
@@ -1,92 +0,0 @@
package com.emotionmuseum.growth.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.emotionmuseum.common.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 成长课题实体
*
* @author emotion-museum
* @since 2025-07-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "growth_topic", autoResultMap = true)
public class GrowthTopic extends BaseEntity {
/**
* 课题标题
*/
@TableField("title")
private String title;
/**
* 分类
*/
@TableField("category")
private String category;
/**
* 难度: easy-简单, medium-中等, hard-困难
*/
@TableField("difficulty")
private String difficulty;
/**
* 描述
*/
@TableField("description")
private String description;
/**
* 内容
*/
@TableField("content")
private String content;
/**
* 持续天数
*/
@TableField("duration_days")
private Integer durationDays;
/**
* 解锁条件
*/
@TableField(value = "unlock_conditions", typeHandler = JacksonTypeHandler.class)
private Map<String, Object> unlockConditions;
/**
* 是否解锁: 0-未解锁, 1-已解锁
*/
@TableField("is_unlocked")
private Integer isUnlocked;
/**
* 进度百分比 (0.00-100.00)
*/
@TableField("progress")
private BigDecimal progress;
/**
* 完成时间
*/
@TableField("completed_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime completedTime;
/**
* 奖励
*/
@TableField(value = "rewards", typeHandler = JacksonTypeHandler.class)
private Map<String, Object> rewards;
}
@@ -1,71 +0,0 @@
package com.emotionmuseum.growth.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.emotionmuseum.common.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 课题互动实体
*
* @author emotion-museum
* @since 2025-07-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("topic_interaction")
public class TopicInteraction extends BaseEntity {
/**
* 课题ID
*/
@TableField("topic_id")
private String topicId;
/**
* 互动类型
*/
@TableField("type")
private String type;
/**
* 内容
*/
@TableField("content")
private String content;
/**
* 用户输入
*/
@TableField("user_input")
private String userInput;
/**
* AI回应
*/
@TableField("ai_response")
private String aiResponse;
/**
* 评分
*/
@TableField("rating")
private Integer rating;
/**
* 反馈
*/
@TableField("feedback")
private String feedback;
/**
* 完成时间
*/
@TableField("completed_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime completedTime;
}