在线抽奖系统:
1、项目介绍:
(1)功能介绍:
主要业务:为公司活动(如年会等)提供在线抽奖功能,满足奖品、抽奖人员的管理,及抽奖活动的需要。
- 用户注册
- 用户登录、会话管理
- 抽奖设置:奖品管理,抽奖人员管理
- 人员抽奖
(2)开发环境与技术栈:
- windows
- Maven
- Lombok
- Spring、SpringMVC、SpringBoot
- MySQL、Mybatis、Druid
(3)项目演示:
用户登录:
用户注册:
奖项设置:
抽奖人员设置:
抽奖:
2、项目准备:
(1)代码框架:(源码)
全部代码源码 Github链接:
https://github.com/JACK-QBS/Project
(2)数据库设计:
数据库表关系图:
(业务上一对一)
为什么要有设置表?
- 1对1关联的表,其实可以只使用1张表保存所有字段;但是在一些可能出现的业务扩展,方便系统扩展使用,所以设计表时,考虑1对1设计。
- 拓展业务 ,一个用户进来设置,当多个用户进来设置的时候(多个用户属于同一公司),如果是只有用户表的话,及无法支撑业务,用户表关联公司,设置表在关联公司
3、后端对前端接口的实现:
要实现功能,需要先明确前后端约定好的接口。需要说明的是,接口的定义一般是前后端约定好的,所以也和前端代码息息相关,前端需要什么数据,需要什么格式的数据,也会在接口中体现。
接口主要体现在:
- 请求需要的信息:请求方法,请求路径,请求数据
- 响应数据
(1)用户的登录、注册、注销
用户登录:
前端请求:
POST api/user/login (请求路径)
Content-Type: application/json
{username: “qbs”, password: “123”}
响应:
{ “success” : true }
后端实现接口:
用户注册:
前端请求:
POST api/user/register (请求路径)
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundarypOUwkGIMUyL0aOZT
username: qbs
password: 123
nickname: 帅哥
email: 666@163.com
age: 18
headFile: (binary)
响应:
{ “success” : true }
后端实现:
用户注销:
前端请求:
POST api/user/login (请求路径)
后端实现:
(2)查询奖项设置、修改抽奖人数:
查询奖项设置:
前端请求:
GET api/setting/query(请求路径)
后端实现:
修改抽奖人数:
前端请求:
GET api/setting/update?batchNumber=5(请求路径)
(接口对应抽奖设置页面中,点每次抽奖人数下拉菜单切换时修改)
后端实现:
(3)新增、修改、删除奖项:
新增奖项:
前端请求:
POST api/award/add (请求路径)
Content-Type: application/json
{name: “特等奖”, count: 1, award: “全球旅行7日游”}
后端实现:
修改奖项:
前端请求:
POST api/award/update (请求路径)
Content-Type: application/json
后端响应:
删除奖项:
前端请求:
GET api/award/delete/4(请求路径)
最后的数字4,对应奖项的id
后端实现:
(4)新增、修改、删除抽奖人员:
新增抽奖人员:
前端请求:
POST api/member/add (请求路径)
Content-Type: application/json
后端实现:
修改抽奖人员
前端请求:
POST api/member/update
Content-Type: application/json
后端实现:
删除抽奖人员
前端请求:
GET api/member/delete/97
(最后的数字为抽奖人员的id)
后端实现:
(5)抽奖、删除获奖人员:
抽奖:
前端请求:
POST api/record/add/3
Content-Type: application/json
(以上路径中最后的数字代表奖项id,请求数据为抽奖人员id组成的数组)
后端实现:
抽奖后端只是插入记录(人员id、奖项id),具体的抽奖是前端实现的,而且也是简单的实现方式,没有任何算法。(只是在当前奖项剩余名额中,每次抽奖人数,在所有未中奖的人员列表中,随机抽取)