156 lines
4.1 KiB
Markdown
156 lines
4.1 KiB
Markdown
# 校园活动组织与报名系统
|
|
|
|
基于 Spring Boot 3.x 的校园活动组织与报名系统后端项目。
|
|
|
|
## 技术栈
|
|
|
|
- Java 21
|
|
- Spring Boot 3.2.5
|
|
- Spring Security 6.x
|
|
- MyBatis-Plus 3.5.5
|
|
- MySQL 8.0+
|
|
- JWT (jjwt 0.12.5)
|
|
- Knife4j 4.4.0
|
|
- Hutool 5.8.25
|
|
- ZXing 3.5.2 (二维码)
|
|
- iText 8.0.2 (PDF)
|
|
- EasyExcel 3.3.4
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
campus-activity-system/
|
|
├── src/main/java/com/campus/activity/
|
|
│ ├── CampusActivityApplication.java # 启动类
|
|
│ ├── config/ # 配置类
|
|
│ ├── controller/ # 控制器层
|
|
│ ├── service/ # 服务层
|
|
│ ├── mapper/ # 数据访问层
|
|
│ ├── entity/ # 实体类
|
|
│ ├── dto/ # 数据传输对象
|
|
│ ├── vo/ # 视图对象
|
|
│ ├── common/ # 公共模块
|
|
│ ├── exception/ # 异常处理
|
|
│ ├── security/ # 安全模块
|
|
│ └── util/ # 工具类
|
|
├── src/main/resources/
|
|
│ ├── application.yml
|
|
│ └── mapper/ # MyBatis XML映射文件
|
|
├── docs/
|
|
│ └── init.sql # 数据库初始化脚本
|
|
└── pom.xml
|
|
```
|
|
|
|
## 快速开始
|
|
|
|
### 1. 环境要求
|
|
|
|
- JDK 21+
|
|
- MySQL 8.0+
|
|
- Maven 3.6+
|
|
|
|
### 2. 数据库初始化
|
|
|
|
执行 `docs/init.sql` 脚本创建数据库和表:
|
|
|
|
```bash
|
|
mysql -u root -p < docs/init.sql
|
|
```
|
|
|
|
### 3. 配置数据库连接
|
|
|
|
修改 `src/main/resources/application.yml` 中的数据库配置:
|
|
|
|
```yaml
|
|
spring:
|
|
datasource:
|
|
url: jdbc:mysql://localhost:3306/campus_activity?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
|
|
username: root
|
|
password: your_password
|
|
```
|
|
|
|
### 4. 运行项目
|
|
|
|
```bash
|
|
mvn spring-boot:run
|
|
```
|
|
|
|
或者在 IDE 中运行 `CampusActivityApplication.java`。
|
|
|
|
### 5. 访问 API 文档
|
|
|
|
启动成功后,访问 Knife4j API 文档:
|
|
|
|
```
|
|
http://localhost:8080/doc.html
|
|
```
|
|
|
|
## 默认账号
|
|
|
|
- 管理员账号:`admin` / `admin123`
|
|
|
|
## API 接口
|
|
|
|
### 认证模块
|
|
|
|
- POST `/api/v1/auth/register` - 用户注册
|
|
- POST `/api/v1/auth/login` - 用户登录
|
|
- POST `/api/v1/auth/refresh` - 刷新Token
|
|
- GET `/api/v1/auth/me` - 获取当前用户信息
|
|
- PUT `/api/v1/auth/password` - 修改密码
|
|
|
|
### 活动模块
|
|
|
|
- GET `/api/v1/activities` - 活动列表
|
|
- GET `/api/v1/activities/{id}` - 活动详情
|
|
- POST `/api/v1/activities` - 创建活动(管理员)
|
|
- PUT `/api/v1/activities/{id}` - 更新活动(管理员)
|
|
- DELETE `/api/v1/activities/{id}` - 删除活动(管理员)
|
|
- GET `/api/v1/activities/calendar` - 日历视图
|
|
- POST `/api/v1/activities/check-conflict` - 时间冲突检测
|
|
|
|
### 报名模块
|
|
|
|
- POST `/api/v1/registrations` - 报名活动
|
|
- DELETE `/api/v1/registrations/{id}` - 取消报名
|
|
- GET `/api/v1/registrations/my` - 我的报名列表
|
|
- GET `/api/v1/registrations/activity/{activityId}` - 活动报名列表(管理员)
|
|
- GET `/api/v1/registrations/{id}/ticket` - 下载电子票PDF
|
|
|
|
### 签到模块
|
|
|
|
- POST `/api/v1/checkin/qrcode/{activityId}` - 生成签到二维码(管理员)
|
|
- POST `/api/v1/checkin/scan` - 学生扫码签到
|
|
- POST `/api/v1/checkin/ticket` - 管理员扫票签到
|
|
- GET `/api/v1/checkin/activity/{activityId}` - 签到列表(管理员)
|
|
|
|
### 评价模块
|
|
|
|
- POST `/api/v1/reviews` - 提交评价
|
|
- GET `/api/v1/reviews/activity/{activityId}` - 活动评价列表
|
|
- GET `/api/v1/reviews/my` - 我的评价列表
|
|
|
|
### 统计模块
|
|
|
|
- GET `/api/v1/statistics/activity/{activityId}` - 活动统计(管理员)
|
|
- GET `/api/v1/statistics/activity/{activityId}/export` - 导出活动数据(管理员)
|
|
- GET `/api/v1/statistics/overview` - 总体统计(管理员)
|
|
|
|
## 开发说明
|
|
|
|
### 代码规范
|
|
|
|
- 遵循阿里巴巴 Java 开发手册
|
|
- 使用 Lombok 简化代码
|
|
- 统一异常处理
|
|
- 统一响应格式
|
|
|
|
### 安全说明
|
|
|
|
- 使用 JWT 进行身份认证
|
|
- 密码使用 BCrypt 加密存储
|
|
- 接口权限控制基于角色
|
|
|
|
## 许可证
|
|
|
|
Apache License 2.0 |