# 校园活动组织与报名系统

校园活动组织与报名系统，支持活动发布、报名、签到、评价等功能。

## 技术栈

### 后端
- Java 21
- Spring Boot 3.1.8
- Spring Security + JWT
- MyBatis-Plus
- MySQL
- Knife4j (API文档)

### 前端
- Vue 3 + TypeScript
- Vite
- Vant UI
- Pinia
- Vue Router

## 部署说明

### 1. 数据库配置

**数据库初始化脚本位置：** `server/docs/init.sql`

**初始化步骤：**
```bash
# 登录MySQL
mysql -u root -p

# 执行初始化脚本
source C:\Users\shiro\Desktop\campus-activity-system\server\docs\init.sql
```

**数据库配置文件位置：** `server/src/main/resources/application.yml`

**需要修改的配置项：**
```yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/campus_activity?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: ${DB_PASSWORD:root}  # 修改为你的数据库密码
```

**环境变量配置（可选）：**
- `DB_PASSWORD`: 数据库密码（默认：root）
- `JWT_SECRET`: JWT密钥（默认：campus-activity-system-secret-key-for-jwt-token-generation-2025）

### 2. 后端部署

**修改API地址：** 后端默认运行在 `http://localhost:8080`

**启动后端：**
```bash
cd server
mvn clean package
java -jar target/campus-activity-system-1.0.0.jar
```

**API文档地址：** `http://localhost:8080/doc.html`

### 3. 前端部署

**API地址配置文件位置：** `web/src/utils/request.ts`

**需要修改的配置项：**
```typescript
const service = axios.create({
    baseURL: 'http://100.64.32.254:8080/api/v1',  // 修改为后端API地址
    timeout: 10000,
});
```

**启动前端：**
```bash
cd web
npm install
npm run dev
```

**构建生产版本：**
```bash
npm run build
```

**前端访问地址：** `http://localhost:3000`

### 4. 默认管理员账号

- 用户名：`admin`
- 密码：`admin123`

## 项目结构

```
campus-activity-system/
├── server/                 # 后端项目
│   ├── docs/              # 文档（含数据库初始化脚本）
│   └── src/
│       └── main/
│           ├── java/      # Java源码
│           └── resources/ # 配置文件（application.yml）
└── web/                   # 前端项目
    └── src/
        ├── utils/         # 工具类（request.ts包含API地址配置）
        └── ...
```

## 注意事项

1. 部署前请确保已安装：
   - JDK 21+
   - MySQL 8.0+
   - Node.js 18+
   - Maven 3.8+

2. 前端API地址必须与后端实际运行地址一致

3. 数据库密码建议使用环境变量配置，不要直接写在配置文件中

4. 生产环境部署时，请修改JWT密钥为强密码