# 校园活动组织与报名系统 基于 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