# Java 后端启动完整指南

## ✅ 环境配置完成

当前系统状态（已完成配置）：
- ✅ **Java 17.0.18** (Amazon Corretto) - 通过 SDKMAN 安装
- ✅ **Maven 3.9.13** - 通过 SDKMAN 安装
- ✅ **Python 3.9.6** - 已安装
- ✅ **MySQL 连接器** - 已安装

---

## 快速启动指南

### 方案 A：使用命令行（推荐）

**步骤：**

1. **加载环境变量**：
   ```bash
   source "$HOME/.sdkman/bin/sdkman-init.sh"
   ```

2. **验证安装**：
   ```bash
   java -version
   mvn -version
   ```

3. **进入项目目录**：
   ```bash
   cd /Users/retirado/Program/ccProgram_0312/reading-platform-java
   ```

4. **启动后端**：
   ```bash
   mvn spring-boot:run
   ```

**优点**：
- 快速直接，无需额外工具
- 可以看到完整的启动日志
- 便于调试

---

### 方案 B：使用 IntelliJ IDEA（图形界面）

**步骤：**
1. 下载并安装 IntelliJ IDEA Community Edition (免费)
   - 下载地址：https://www.jetbrains.com/idea/download/

2. 打开 IntelliJ IDEA
3. 选择 `File` → `Open`
4. 选择目录：`/Users/retirado/Program/ccProgram_0312/reading-platform-java`
5. 等待 IDEA 自动识别项目并下载 Maven 依赖
6. 找到 `src/main/java/com/reading/platform/ReadingPlatformApplication.java`
7. 点击类名旁边的绿色播放按钮 ▶️

**优点**：
- 图形化界面，操作简单
- 内置代码编辑和调试功能
- 无需手动配置环境变量

---

## 启动成功后的验证

### 1. 检查启动日志
控制台应显示以下内容表示启动成功：
```
Tomcat started on port 8080 (http)
Started ReadingPlatformApplication in X seconds
```

### 2. 访问 API 文档
```
http://localhost:8080/doc.html
```

Knife4j 文档界面提供：
- 完整的 API 列表
- 在线测试功能
- 接口参数说明

### 3. 测试登录接口

**请求示例：**
```bash
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"123456"}'
```

**预期响应：**
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "token": "eyJhbGc...",
    "userId": 1,
    "username": "admin",
    "name": "平台管理员",
    "role": "admin"
  }
}
```

### 4. 测试新 API 端点

使用返回的 token 测试受保护的接口：

```bash
TOKEN="返回的token值"

# 查询主题列表
curl http://localhost:8080/api/v1/admin/themes \
  -H "Authorization: Bearer $TOKEN"

# 查询课程套餐
curl http://localhost:8080/api/v1/admin/packages \
  -H "Authorization: Bearer $TOKEN"

# 查询资源库
curl http://localhost:8080/api/v1/admin/resources/libraries \
  -H "Authorization: Bearer $TOKEN"
```

---

## 数据库配置

**数据库连接信息：**
```yaml
spring:
  datasource:
    url: jdbc:mysql://8.148.151.56:3306/reading_platform
    username: root
    password: reading_platform_pwd
```

**已创建的数据表：**
- `t_admin_user` - 管理员用户
- `t_teacher` - 教师用户
- `t_parent` - 家长用户
- `t_student` - 学生
- `t_tenant` - 租户
- `course_package` - 课程套餐
- `course_package_course` - 套餐课程关联
- `tenant_package` - 租户套餐
- `course_lesson` - 课程环节
- `lesson_step` - 教学环节
- `lesson_step_resource` - 环节资源关联
- `theme` - 主题字典
- `t_resource_library` - 资源库
- `t_resource_item` - 资源项目

---

## JWT 配置

```yaml
jwt:
  secret: readingPlatformJwtSecretKeyForTokenGeneration2024
  expiration: 86400000  # 24小时（毫秒）
```

---

## 已实现的 API 端点

### 认证接口
- `POST /api/auth/login` - 用户登录
- `GET /api/auth/me` - 获取当前用户信息
- `POST /api/auth/change-password` - 修改密码

### 超管端接口 (/api/v1/admin)
- **主题管理**: `/themes` - CRUD操作
- **课程套餐**: `/packages` - 创建、审核、发布、下线
- **课程环节**: `/courses/{courseId}/lessons` - 管理6种课程类型
- **资源库**: `/resources/libraries`, `/resources/items` - 资源库管理
- **文件上传**: `/files/upload` - 文件上传接口

### 学校端接口 (/api/v1/school)
- **套餐管理**: `/packages` - 查询、续费套餐

---

## 常见问题

### Q: 提示端口 8080 被占用
**A:** 查找并终止占用进程：
```bash
lsof -ti :8080 | xargs kill -9
```

### Q: SDKMAN 命令找不到
**A:** 需要先加载 SDKMAN 环境：
```bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
```

### Q: 编译失败
**A:** 清理并重新编译：
```bash
mvn clean compile
```

### Q: 数据库连接失败
**A:** 检查网络连接和数据库服务状态

---

## 项目结构

```
reading-platform-java/
├── src/main/java/com/reading/platform/
│   ├── ReadingPlatformApplication.java  # 启动类
│   ├── common/                          # 公共组件
│   │   ├── annotation/                  # 注解定义
│   │   ├── aspect/                      # AOP切面
│   │   ├── config/                      # 配置类
│   │   ├── enums/                       # 枚举定义
│   │   ├── exception/                   # 异常处理
│   │   ├── response/                    # 响应封装
│   │   └── security/                   # 安全模块
│   ├── controller/                      # 控制器
│   │   ├── admin/                       # 超管端
│   │   ├── school/                      # 学校端
│   │   ├── teacher/                     # 教师端
│   │   └── parent/                      # 家长端
│   ├── dto/                             # 数据传输对象
│   │   ├── request/                     # 请求DTO
│   │   └── response/                    # 响应DTO
│   ├── entity/                          # 实体类
│   ├── mapper/                          # MyBatis Mapper
│   ├── service/                         # 业务逻辑
│   └── util/                            # 工具类
├── src/main/resources/
│   ├── application.yml                   # 应用配置
│   └── db/migration/                     # 数据库迁移脚本
└── pom.xml                              # Maven配置
```

---

## 技术栈

| 技术 | 版本 | 说明 |
|------|------|------|
| Java | 17.0.18 | Amazon Corretto |
| Spring Boot | 3.2.3 | 基础框架 |
| MyBatis-Plus | 3.5.5 | ORM框架 |
| MySQL Connector | 8.3.0 | 数据库驱动 |
| JWT | jjwt 0.12.5 | Token生成 |
| Knife4j | 4.4.0 | API文档 |
| Lombok | - | 代码简化 |
| Hutool | 5.8.26 | 工具库 |

---

## 开发模式提示

### 启用调试日志
在 `application.yml` 中设置：
```yaml
logging:
  level:
    com.reading.platform: debug
```

### 热重载（开发时）
使用 Spring Boot DevTools 可实现自动重载（需添加依赖）

### 测试账号
- **超管**: admin / 123456
- **学校**: school1 / 123456
- **教师**: teacher1 / 123456
- **家长**: parent1 / 123456

---

*最后更新: 2026-03-12 - Java后端环境配置完成*
