项目:在线抽奖系统

在线抽奖系统

项目目标

  • 复习Spring相关知识:IOC/DI(Bean的注册、配置与使用)、SpringMVC、AOP
  • 复习SpringBoot的配置使用
  • 学习系统设计,结合并深入复习学过的知识,如异常,HTTP数据传输流程等等
  • 复习并巩固Mybatis的基本使用,理解数据转换时对应的映射关系
  • 学习项目开发流程

开发环境与技术栈

  • Windows/Mac/Linux
  • Maven
  • Lombok
  • Spring、SpringMVC、SpringBoot
  • MySQL、Mybatis、Druid

项目功能

主要业务:为公司活动(如年会等)提供在线抽奖功能,满足奖品、抽奖人员的管理,及抽奖活动的需

要。

  • 用户注册
  • 用户登录、会话管理
  • 抽奖设置:奖品管理,抽奖人员管理
  • 人员抽奖

项目演示

用户登录

在这里插入图片描述

用户注册

在这里插入图片描述

奖项设置

在这里插入图片描述
在这里插入图片描述

抽奖人员设置

在这里插入图片描述

抽奖

在这里插入图片描述

数据库设计

创建数据库及表

drop database if exists lucky_draw; 

create database lucky_draw character set utf8mb4; 

use lucky_draw; 

drop table if exists user; 

create table user( 

id int primary key auto_increment,username varchar(20) not null unique comment '用户账号', 

password varchar(20) not null comment '密码', 

nickname varchar(20) comment '用户昵称', 

email varchar(50) comment '邮箱', 

age int comment '年龄', 

head varchar(255) comment '头像url', 

create_time timestamp default NOW() comment '创建时间' 

) comment '用户表'; 

drop table if exists setting; 

create table setting( 

id int primary key auto_increment, 

user_id int not null comment '用户id', 

batch_number int not null comment '每次抽奖人数', 

create_time timestamp default NOW() comment '创建时间', 

foreign key (user_id) references user(id) 

) comment '抽奖设置'; 

drop table if exists award; 

create table award( 

id int primary key auto_increment, 

name varchar(20) not null comment '奖项名称', 

count int not null comment '奖项人数', 

award varchar(20) not null comment '奖品', 

setting_id int not null comment '抽奖设置id', 

create_time timestamp default NOW() comment '创建时间', 

foreign key (setting_id) references setting(id) 

) comment '奖项'; 

drop table if exists member; 

create table member( 

id int primary key auto_increment, 

name varchar(20) not null comment '姓名', 

no varchar(20) not null comment '工号', 

user_id int not null comment '用户id', 

create_time timestamp default NOW() comment '创建时间', 

foreign key (user_id) references user(id) 

) comment '抽奖人员'; 

drop table if exists record; 

create table record( 

id int primary key auto_increment, 

member_id int not null, 

award_id int not null, 

create_time timestamp default NOW() comment '创建时间', 

foreign key (member_id) references member(id), 

foreign key (award_id) references award(id) 

) comment '学生表'; 

insert into user(id, username, password, nickname, email, age, head) values (1, 

'bit', '123', '小比特', '1111@163.com', 18, 'img/test-head.jpg'); 

\## 数据字典:学生毕业年份 

insert into setting(id, user_id, batch_number) values (1, 1, 8);insert into award(name, count, award, setting_id) values ('特靠谱欢乐奖', 1, '深圳湾 

一号', 1); 

insert into award(name, count, award, setting_id) values ('特靠谱娱乐奖', 5, 'BMW 

X5', 1); 

insert into award(name, count, award, setting_id) values ('特靠谱励志奖', 20, '办公 

室一日游', 1); 

\## 数据字典:学生专业 

insert into member(name, no, user_id) values ('李寻欢', '水果刀', 1); 

insert into member(name, no, user_id) values ('郭靖', '降猪十八掌', 1); 

insert into member(name, no, user_id) values ('韦小宝', '抓?龙爪手', 1); 

insert into member(name, no, user_id) values ('风清扬', '孤独九贱', 1); 

insert into member(name, no, user_id) values ('哪吒', '喷气式电单车', 1); 

insert into member(name, no, user_id) values ('渠昊空', 'no2', 1); 

insert into member(name, no, user_id) values ('闵觅珍', 'no2', 1); 

insert into member(name, no, user_id) values ('慈新之', 'no3', 1); 

insert into member(name, no, user_id) values ('户柔绚', 'no4', 1); 

insert into member(name, no, user_id) values ('柯雅容', 'no5', 1); 

insert into member(name, no, user_id) values ('邰虹彩', 'no6', 1); 

insert into member(name, no, user_id) values ('延易蓉', 'no7', 1); 

insert into member(name, no, user_id) values ('吉娇然', 'no8', 1); 

insert into member(name, no, user_id) values ('百里惜蕊', 'no9', 1); 

insert into member(name, no, user_id) values ('云寻双', 'no10', 1); 

insert into member(name, no, user_id) values ('衅嘉颖', 'no11', 1); 

insert into member(name, no, user_id) values ('银以晴', 'no12', 1); 

insert into member(name, no, user_id) values ('保颐和', 'no13', 1); 

insert into member(name, no, user_id) values ('饶燕婉', 'no14', 1); 

insert into member(name, no, user_id) values ('单阳平', 'no15', 1); 

insert into member(name, no, user_id) values ('墨碧春', 'no16', 1); 

insert into member(name, no, user_id) values ('侨诗柳', 'no17', 1); 

insert into member(name, no, user_id) values ('羿灵珊', 'no18', 1); 

insert into member(name, no, user_id) values ('甘凌波', 'no19', 1); 

insert into member(name, no, user_id) values ('希忻然', 'no20', 1); 

insert into member(name, no, user_id) values ('虎晴画', 'no21', 1); 

insert into member(name, no, user_id) values ('闪雅洁', 'no22', 1); 

insert into member(name, no, user_id) values ('风易云', 'no23', 1); 

insert into member(name, no, user_id) values ('泷运盛', 'no24', 1); 

insert into member(name, no, user_id) values ('沐长菁', 'no25', 1); 

insert into member(name, no, user_id) values ('栗芃芃', 'no26', 1); 

insert into member(name, no, user_id) values ('义涵蕾', 'no27', 1); 

insert into member(name, no, user_id) values ('泥清妙', 'no28', 1); 

insert into member(name, no, user_id) values ('亓官清宁', 'no29', 1); 

insert into member(name, no, user_id) values ('侯曜曦', 'no30', 1); 

insert into member(name, no, user_id) values ('齐淑雅', 'no31', 1); 

insert into member(name, no, user_id) values ('邸平松', 'no32', 1); 

insert into member(name, no, user_id) values ('泉千易', 'no33', 1); 

insert into member(name, no, user_id) values ('段彩静', 'no34', 1); 

insert into member(name, no, user_id) values ('伦晓凡', 'no35', 1); 

insert into member(name, no, user_id) values ('余莎莎', 'no36', 1); 

insert into member(name, no, user_id) values ('贵念梦', 'no37', 1); 

insert into member(name, no, user_id) values ('接骊文', 'no38', 1); 

insert into member(name, no, user_id) values ('龚芷蝶', 'no39', 1); 

insert into member(name, no, user_id) values ('丙冷霜', 'no40', 1); 

insert into member(name, no, user_id) values ('卫诗蕊', 'no41', 1); 

insert into member(name, no, user_id) values ('濯雅懿', 'no42', 1); 

insert into member(name, no, user_id) values ('蓝亦竹', 'no43', 1); 

insert into member(name, no, user_id) values ('雷书君', 'no44', 1); 

insert into member(name, no, user_id) values ('刚孤风', 'no45', 1);insert into member(name, no, user_id) values ('帛晨蓓', 'no46', 1); 

insert into member(name, no, user_id) values ('雀凝梦', 'no47', 1); 

insert into member(name, no, user_id) values ('於良工', 'no48', 1); 

insert into member(name, no, user_id) values ('从翠阳', 'no49', 1); 

insert into member(name, no, user_id) values ('宫咸英', 'no50', 1); 

insert into member(name, no, user_id) values ('项英光', 'no51', 1); 

insert into member(name, no, user_id) values ('胥友菱', 'no52', 1); 

insert into member(name, no, user_id) values ('慎初翠', 'no53', 1); 

insert into member(name, no, user_id) values ('锺映寒', 'no54', 1); 

insert into member(name, no, user_id) values ('貊飞翔', 'no55', 1); 

insert into member(name, no, user_id) values ('葛秀妮', 'no56', 1); 

insert into member(name, no, user_id) values ('劳令梅', 'no57', 1); 

insert into member(name, no, user_id) values ('昝欣怿', 'no58', 1); 

insert into member(name, no, user_id) values ('党忆柏', 'no59', 1); 

insert into member(name, no, user_id) values ('福月华', 'no60', 1); 

insert into member(name, no, user_id) values ('睢巧春', 'no61', 1); 

insert into member(name, no, user_id) values ('修听枫', 'no62', 1); 

insert into member(name, no, user_id) values ('孔梦竹', 'no63', 1); 

insert into member(name, no, user_id) values ('子车悦欣', 'no64', 1); 

insert into member(name, no, user_id) values ('赵飞宇', 'no65', 1); 

insert into member(name, no, user_id) values ('宁天睿', 'no66', 1); 

insert into member(name, no, user_id) values ('申文心', 'no67', 1); 

insert into member(name, no, user_id) values ('冀轩昂', 'no68', 1); 

insert into member(name, no, user_id) values ('邬代灵', 'no69', 1); 

insert into member(name, no, user_id) values ('佟嘉德', 'no70', 1); 

insert into member(name, no, user_id) values ('溥绿兰', 'no71', 1); 

insert into member(name, no, user_id) values ('改昊昊', 'no72', 1); 

insert into member(name, no, user_id) values ('捷梦影', 'no73', 1); 

insert into member(name, no, user_id) values ('孛书语', 'no74', 1); 

insert into member(name, no, user_id) values ('粟芮优', 'no75', 1); 

insert into member(name, no, user_id) values ('东门虹英', 'no76', 1); 

insert into member(name, no, user_id) values ('漆梓玥', 'no77', 1); 

insert into member(name, no, user_id) values ('尔幻玉', 'no78', 1); 

insert into member(name, no, user_id) values ('丁秋玉', 'no79', 1); 

insert into member(name, no, user_id) values ('平晨旭', 'no80', 1); 

insert into member(name, no, user_id) values ('遇沙羽', 'no81', 1); 

insert into member(name, no, user_id) values ('国琳溪', 'no82', 1); 

insert into member(name, no, user_id) values ('仪谷枫', 'no83', 1); 

insert into member(name, no, user_id) values ('钭尔琴', 'no84', 1); 

insert into member(name, no, user_id) values ('澄慧丽', 'no85', 1); 

insert into member(name, no, user_id) values ('佼清秋', 'no86', 1); 

insert into member(name, no, user_id) values ('缪荌荌', 'no87', 1); 

insert into member(name, no, user_id) values ('闻人幼丝', 'no88', 1); 

insert into member(name, no, user_id) values ('绍美曼', 'no89', 1); 

insert into member(name, no, user_id) values ('回访波', 'no90', 1); 

前后端接口

要实现功能,需要先明确前后端约定好的接口。

需要说明的是,接口的定义一般是前后端约定好的,所以也和前端代码息息相关,前端需要什么数据,

需要什么格式的数据,也会在接口中体现。

接口主要体现在

  • 请求需要的信息:请求方法,请求路径,请求数据
  • 响应数据

用户登录

请求

POST api/user/login 
Content-Type: application/json 
{username: "bit", password: "123"} 

响应

{ 
"success" : true 
}

用户注册

请求

POST api/user/register 

Content-Type: multipart/form-data; boundary=---- 

WebKitFormBoundarypOUwkGIMUyL0aOZT 

username: haha 

password: 111 

nickname: 牛牛牛 

email: 666@163.com 

age: 66 

headFile: (binary) 

注意:以上请求数据是解析过的,http原生发送的数据还包含其他很多内容,比较多,可以动手抓包看

看。其中boundary后边的是随机生成的,请求数据中会使用该信息。

响应

{
    
"success" : true 
}

查询抽奖设置

请求

GET api/setting/query 

响应

{
    
    "success" : true, 
    "data" : {
    
        "id" : 1, 
        "userId" : 1, 
        "batchNumber" : 8,"createTime" : "2020-08-14 08:16:31", 
        "user" : {
    
            "id" : 1, 
            "username" : "bit", 
            "password" : "123", 
            "nickname" : "小比特", 
            "email" : "1111@163.com", 
            "age" : 18, 
            "head" : "img/test-head.jpg", 
            "createTime" : "2020-08-14 08:16:31", 
            "settingId" : 1 
        },
        "awards" : [ {
    
            "id" : 1, 
            "name" : "特靠谱欢乐奖", 
            "count" : 1, 
            "award" : "深圳湾一号", 
            "settingId" : 1, 
            "createTime" : "2020-08-14 08:16:31", 
            "luckyMemberIds" : [ 5 ] 
        }, {
   
            "id" : 2, 
            "name" : "特靠谱娱乐奖", 
            "count" : 5, 
            "award" : "BMW X5", 
            "settingId" : 1, 
            "createTime" : "2020-08-14 08:16:31", 
            "luckyMemberIds" : [ 56, 40, 32, 65, 81 ] 
        }, {
   
            "id" : 3, 
            "name" : "特靠谱励志奖", 
            "count" : 20, 
            "award" : "办公室一日游"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值