# Java抽奖系统 **Repository Path**: su_zhou_123/java-lottery-system ## Basic Information - **Project Name**: Java抽奖系统 - **Description**: Java基于多设计模式的抽奖系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 抽奖系统 基于 Spring Boot 的企业级抽奖系统,采用多种设计模式实现,支持活动管理、奖品管理、用户管理和抽奖功能。 ## 技术栈 - **后端框架**: Spring Boot 3.5.8 - **Java 版本**: JDK 17 - **数据库**: MySQL 8.0 - **ORM 框架**: MyBatis 3.0.3 - **缓存**: Redis - **消息队列**: RabbitMQ - **邮件服务**: Spring Boot Mail - **身份验证**: JWT (jjwt 0.11.5) - **工具库**: Hutool 5.8.25 - **前端**: HTML + CSS + JavaScript ## 核心功能 ### 1. 用户管理 - 用户注册(支持邮箱验证码) - 密码登录 - 邮箱验证码登录 - 用户列表查询(支持按身份筛选) ### 2. 活动管理 - 创建抽奖活动 - 查询活动列表(分页) - 获取活动详情 - 活动状态管理(进行中/已完成) ### 3. 奖品管理 - 创建奖品(支持图片上传) - 查询奖品列表(分页) - 奖品等级管理(一等奖、二等奖、三等奖) ### 4. 抽奖功能 - 异步抽奖(基于 RabbitMQ 消息队列) - 中奖记录查询 - 支持失败重试机制 ### 5. 活动状态管理 - 采用**状态模式**实现活动状态流转 - 支持状态回滚机制 - 策略模式处理不同状态下的操作 ## 项目结构 ``` lottery-system/ ├── src/ │ ├── main/ │ │ ├── java/com/bit/lotterysystem/ │ │ │ ├── common/ # 公共模块 │ │ │ │ ├── config/ # 配置类 │ │ │ │ ├── errorcode/ # 错误码定义 │ │ │ │ ├── exception/ # 异常处理 │ │ │ │ └── utils/ # 工具类 │ │ │ ├── controller/ # 控制器层 │ │ │ ├── dao/ # 数据访问层 │ │ │ │ ├── dataobject/ # 数据对象 │ │ │ │ ├── handler/ # MyBatis 类型处理器 │ │ │ │ └── mapper/ # MyBatis Mapper │ │ │ └── service/ # 服务层 │ │ │ ├── activitystatus/ # 活动状态管理(状态模式) │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── enums/ # 枚举定义 │ │ │ ├── impl/ # 服务实现 │ │ │ └── mq/ # 消息队列处理 │ │ └── resources/ │ │ ├── static/ # 静态资源 │ │ │ ├── css/ # 样式文件 │ │ │ ├── js/ # JavaScript 文件 │ │ │ ├── pic/ # 图片资源 │ │ │ └── *.html # 前端页面 │ │ ├── application.properties # 配置文件 │ │ └── logback-spring.xml # 日志配置 │ └── test/ # 测试代码 └── pom.xml # Maven 配置 ``` ## 设计模式 ### 1. 状态模式 (State Pattern) - `ActivityStatusManager`: 活动状态管理器接口 - `ActivityStatusManagerImpl`: 状态管理实现 - `ActivityOperator`: 活动操作策略 - `PrizeOperator`: 奖品操作策略 - `UserOperator`: 用户操作策略 ### 2. 策略模式 (Strategy Pattern) - 不同状态下的操作策略实现 - 支持活动、奖品、用户的独立操作 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ - Redis 6.0+ - RabbitMQ 3.8+ ### 配置说明 修改 `src/main/resources/application.properties` 中的配置: ```properties # MySQL 数据库配置 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/lottery_system spring.datasource.username=your-username spring.datasource.password=your-password # Redis 配置 spring.data.redis.host=localhost spring.data.redis.port=6379 spring.data.redis.password=your-redis-password # RabbitMQ 配置 spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=your-rabbitmq-username spring.rabbitmq.password=your-rabbitmq-password # 邮件配置(QQ邮箱) spring.mail.host=smtp.qq.com spring.mail.port=587 spring.mail.username=your-email@qq.com spring.mail.password=your-authorization-code # 文件上传路径 pic.local-path=/path/to/your/upload/directory ``` ### 运行项目 1. 克隆项目到本地 ```bash git clone https://gitee.com/su_zhou_123/java-lottery-system.git cd java-lottery-system ``` 2. 创建数据库并导入表结构 ```sql CREATE DATABASE lottery_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. 修改配置文件中的数据库连接信息 4. 启动项目 ```bash mvn clean install mvn spring-boot:run ``` 5. 访问前端页面 - 管理员页面: http://localhost:8080/admin.html - 登录页面: http://localhost:8080/blogin.html - 注册页面: http://localhost:8080/register.html ## API 接口 ### 用户相关 - `POST /register` - 用户注册 - `POST /password/login` - 密码登录 - `POST /email/login` - 邮箱验证码登录 - `GET /verification-code/send` - 发送验证码 - `GET /base-user/find-list` - 查询用户列表 ### 活动相关 - `POST /activity/create` - 创建活动 - `GET /activity/find-list` - 查询活动列表 - `GET /activity-detail/find` - 获取活动详情 ### 奖品相关 - `POST /prize/create` - 创建奖品 - `GET /prize/find-list` - 查询奖品列表 - `POST /pic/upload` - 上传图片 ### 抽奖相关 - `POST /draw-prize` - 抽奖 - `POST /winning-records/show` - 查询中奖记录 ## 数据库设计 ### 主要数据表 - `activity` - 活动表 - `activity_prize` - 活动奖品关联表 - `activity_user` - 活动用户关联表 - `prize` - 奖品表 - `user` - 用户表 - `winning_record` - 中奖记录表 ## 特色功能 1. **异步抽奖**: 基于 RabbitMQ 实现异步抽奖,提高系统并发能力 2. **状态管理**: 采用状态模式管理活动状态流转,支持回滚 3. **数据加密**: 敏感信息加密存储 4. **邮件验证**: 支持邮箱验证码登录和注册 5. **JWT 认证**: 基于 JWT 的用户身份认证 6. **图片上传**: 支持奖品图片上传和管理 7. **分页查询**: 支持活动、奖品、用户的分页查询 ## 许可证 本项目未声明开源许可证文件。 ## 联系方式 如有问题或建议,欢迎提交 Issue。