# happy-java **Repository Path**: menghan-mzq/happy-java ## Basic Information - **Project Name**: happy-java - **Description**: java 学习平台 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # happy-java > 让喜欢 Java 编程的人快乐地学习 Java 编程 ## 项目简介 happy-java 是一个面向 Java 学习者的在线学习平台,通过「课程 + 题库 + AI 答疑 + 积分激励」四位一体的方式,让学习者在系统化的学习路径中掌握 Java 编程。项目基于 Spring Boot 3.3 构建,集成 Spring AI 大模型对话、MySQL、Druid 连接池、MyBatis 等主流技术,涵盖统一响应、异常处理、多环境配置、容器化部署等工程化最佳实践。 > 完整业务与功能设计见 [DESIGN.md](DESIGN.md)。 ## 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Java | 21 (LTS) | 编程语言 | | Spring Boot | 3.3.5 | 应用框架 | | Spring AI | 1.0.0-M6 | AI 大模型集成 | | Spring Cloud | 2023.0.3 | 微服务框架 | | MySQL | 8.x | 关系型数据库 | | Druid | 1.2.20 | 数据库连接池 | | MyBatis | 3.0.3 | ORM 框架 | | Hutool | 5.8.27 | Java 工具包 | | Lombok | 1.18.36 | 代码简化工具 | | Maven | 3.9+ | 构建工具 | | Vue 3 | 3.x | 前端框架 | | Vite | 5.x | 前端构建工具 | | Nginx | stable | 前端部署 & API 反向代理 | | Element Plus | 2.x | 前端 UI 组件库 | ## 模块说明 ``` happy-java ├── happy-learning-dependencies # Maven Archetype 骨架模板 ├── happy-java-common # 通用基础设施(统一响应、异常处理) ├── happy-java-user # 用户服务(AI 对话,端口 8081) ├── happy-java-server # 基础服务(MySQL + Druid,端口 8082) └── happy-java-web # Vue 3 前端(端口 5173 开发 / 80 生产) ``` | 模块 | 说明 | |------|------| | happy-learning-dependencies | Maven Archetype 模板,用于快速生成学习项目骨架 | | happy-java-common | 通用基础设施模块,提供统一响应体 `Result`、全局异常处理、业务异常、响应码枚举等 | | happy-java-user | 用户服务模块,集成 Spring AI 调用 DeepSeek 大模型进行智能对话 | | happy-java-server | 基础服务模块,集成 MySQL + Druid 连接池 + MyBatis,提供数据持久化能力 | | happy-java-web | Vue 3 前端模块,提供学习界面、刷题练习、AI 答疑等用户交互 | ## 快速开始 ### 环境要求 - JDK 21+ - Maven 3.9+ - Node.js 18+(前端开发需要) - MySQL 8.x(本地开发需要,Docker 部署自动提供) - Docker 24+(Docker 部署需要) - DeepSeek API Key(AI 答疑功能需要,[获取地址](https://platform.deepseek.com/)) ### 方式 A:Docker 一键启动(推荐) ```bash git clone https://gitee.com/menghan/happy-java.git cd happy-java cp .env.example .env # 编辑 .env 填入 DeepSeek API Key(可选) docker-compose up -d --build ``` 启动后访问 http://localhost:80 即可使用。首次构建约 3-5 分钟。 ### 方式 B:本地开发启动 1. **初始化数据库** ```bash mysql -uroot -p < happy-java-server/src/main/resources/db/01_schema.sql mysql -uroot -p < happy-java-server/src/main/resources/db/02_data.sql ``` 脚本会自动创建 `happy_java` 数据库、18 张业务表并灌入示例数据。 2. **启动后端** ```bash export DEEPSEEK_API_KEY=your-api-key # AI 功能需要 mvn clean install -DskipTests java -jar happy-java-server/target/happy-java-server-0.0.1-SNAPSHOT.jar # 端口 8082 java -jar happy-java-user/target/happy-java-user-0.0.1-SNAPSHOT.jar # 端口 8081 ``` 3. **启动前端** ```bash cd happy-java-web npm install npm run dev # 端口 5173 ``` ### 访问地址 | 服务 | Docker 部署 | 本地开发 | |------|------------|---------| | 前端 | http://localhost:80 | http://localhost:5173 | | 后端基础服务 | http://localhost:8082/happy-java-server/ | 同左 | | AI 对话服务 | http://localhost:8081/happy-java-user/ | 同左 | | Druid 监控 | http://localhost:8082/happy-java-server/druid/ | 同左 | > 默认账号:`admin`/`admin123`(管理员),`zhangsan`/`123456`(学员) > > 完整使用说明见 [使用说明文档](.team/usage-guide.md) ## 接口文档 ### happy-java-user(端口 8081) | 接口 | 方法 | 说明 | 参数 | |------|------|------|------| | `/happy-java-user/user/hello` | GET | 健康检查 | 无 | | `/happy-java-user/user/chat?message=xxx` | GET | AI 对话 | message: 对话内容 | **响应格式** ```json { "code": 200, "message": "操作成功", "data": "对话结果", "timestamp": 1700000000000 } ``` ### happy-java-server(端口 8082) | 接口 | 方法 | 说明 | |------|------|------| | `/happy-java-server/hello` | GET | 健康检查 | | `/happy-java-server/druid/*` | GET | Druid 监控控制台 | ## 配置说明 项目采用多环境配置(`dev`/`prod`),通过 `SPRING_PROFILES_ACTIVE` 环境变量切换: | 环境变量 | 说明 | 默认值 | |----------|------|--------| | `SPRING_PROFILES_ACTIVE` | 运行环境 | dev | | `DEEPSEEK_API_KEY` | DeepSeek API Key | - | | `AI_MODEL` | AI 模型名称 | deepseek-chat | | `MYSQL_HOST` | MySQL 主机 | localhost | | `MYSQL_PORT` | MySQL 端口 | 3306 | | `MYSQL_DATABASE` | 数据库名 | happy_java | | `MYSQL_USERNAME` | 数据库用户名 | root | | `MYSQL_PASSWORD` | 数据库密码 | - | | `DRUID_USERNAME` | Druid 监控用户名 | admin | | `DRUID_PASSWORD` | Druid 监控密码 | admin123 | | `LOG_LEVEL` | 日志级别 | INFO | ## 数据模型 数据库共 **18 张表**,分为 7 大业务域,详见 [DESIGN.md](DESIGN.md): | 业务域 | 表 | |--------|-----| | 用户 | `sys_user` | | 学习内容 | `learn_track`、`course`、`chapter`、`lesson` | | 题库 | `question`、`question_option`、`answer_record` | | 学习进度 | `learning_record`、`course_favorite`、`study_note` | | AI 答疑 | `chat_session`、`chat_message` | | 激励体系 | `point_record`、`badge`、`user_badge`、`sign_in_record` | | 互动 | `lesson_comment` | ### 种子账号 | 用户名 | 密码 | 角色 | |--------|------|------| | `admin` | `admin123` | 管理员 | | `zhangsan` / `lisi` / `wangwu` | `123456` | 学员 | ## 项目结构 ``` happy-java/ ├── happy-java-common/ │ └── src/main/java/priv/menghan/common/ │ ├── enums/ResultCode.java # 响应码枚举 │ ├── exception/ │ │ ├── BusinessException.java # 业务异常 │ │ └── GlobalExceptionHandler.java # 全局异常处理 │ └── result/ │ ├── Result.java # 统一响应体 │ └── PageResult.java # 分页结果 ├── happy-java-user/ │ ├── Dockerfile │ └── src/main/java/priv/menghan/user/ │ ├── UserApplication.java # 启动类 │ ├── controller/UserController.java # 用户控制器 │ └── service/ │ ├── AIGCService.java # AI 服务接口 │ └── impl/AIGCServiceImpl.java # AI 服务实现 ├── happy-java-server/ │ ├── Dockerfile │ ├── src/main/java/priv/menghan/server/ │ │ ├── ServerApplication.java # 启动类 │ │ ├── controller/ # 6 个业务控制器 │ │ ├── service/ # 业务服务层 │ │ ├── mapper/ # MyBatis Mapper 接口 │ │ ├── entity/ # 实体类 │ │ └── dto/ # 数据传输对象 │ └── src/main/resources/ │ ├── application.yml # 主配置 │ ├── application-dev.yml # 开发环境 │ ├── application-prod.yml # 生产环境 │ ├── db/ │ │ ├── 01_schema.sql # 全量建表脚本 │ │ └── 02_data.sql # 种子数据脚本 │ └── mapper/ # MyBatis XML 映射文件 ├── happy-java-web/ # Vue 3 前端 │ ├── Dockerfile # 多阶段构建(Node → Nginx) │ ├── nginx.conf # Nginx 配置(静态文件 + API 代理) │ ├── package.json │ ├── vite.config.ts │ └── src/ │ ├── views/ # 页面组件 │ ├── api/ # API 请求模块 │ ├── router/ # 路由配置 │ ├── store/ # Pinia 状态管理 │ └── components/ # 公共组件 ├── docker-compose.yml # Docker 编排(4 个服务) ├── .env.example # 环境变量模板 ├── DESIGN.md # 业务与功能设计文档 └── pom.xml # 根 POM ``` ## 开发指南 ### 统一响应 所有接口返回统一的 `Result` 格式: ```java // 成功 return Result.success(data); return Result.success(data, "操作成功"); // 失败 return Result.fail(ResultCode.BAD_REQUEST); return Result.fail(ResultCode.BUSINESS_ERROR, "自定义消息"); ``` ### 异常处理 抛出 `BusinessException` 会被全局异常处理器捕获并返回统一格式: ```java throw new BusinessException(ResultCode.BUSINESS_ERROR, "业务逻辑错误"); ``` ## 参与贡献 1. Fork 本仓库 2. 新建 `feat_xxx` 分支 3. 提交代码 4. 新建 Pull Request ## 开源许可 本项目基于 [木兰宽松许可证第2版](LICENSE) 开源。