「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
大二的时候参加了一次服务外包大赛但由于技术有限没做出啥东西来,今年决定再参加一次,选择的赛题就是银行秒杀系统,打算一边写项目一边记录,欢迎大家与我交流,我写的不好的地方也欢迎指正。项目(后端部分)的源代码都放在了github上,前端的部分等项目做完以会一并放上去:
因为是服务外包大赛,所以会比较注重可视化的开发,目前的想法是分为三个模块:
- 针对普通用户的秒杀商品模块
- 针对管理员的活动配置模块
- 大屏模块(数据展示)
但凡是个系统就会有用户,所以我开发的时候一般都会从用户系统开始,先设计一下用户表的结构
| 序号 | 中文名称 | 字段名 | 为空 | 数据类型 | 说明 |
|---|---|---|---|---|---|
| 1 | 主键 | id | 否 | bigint | 自增主键 |
| 2 | Uuid | user_id | varchar | 唯一id | |
| 3 | 用户名 | name | varchar | ||
| 4 | 账号 | tel | varchar | 通过手机号注册 | |
| 5 | 密码 | pass_word | varchar | MD5加密 | |
| 6 | 性别 | sex | varchar | 0:男;1:女 | |
| 7 | 生日 | birth | varchar | ||
| 8 | 年龄 | age | varchar | ||
| 9 | 身份证号码 | id_card | varchar | ||
| 10 | 用户类型 | user_type | varchar | ||
| 11 | 所在省份 | address | varchar | ||
| 12 | 工作状态 | status | varchar | 0:正常 1:异常(无业/失业) | |
| 13 | 是否失信 | is_black | tinyint | 0:否 ; 1:是 | |
| 14 | 逻辑删除 | is_delete | tinyint | 0:否,1:是 | |
| 15 | 是否管理员 | is_leader | tinyint | 0:否,1:是 | |
| 16 | 创建记录时间 | gmt_create | datetime | ||
| 17 | 更新记录时间 | gmt_modified | datetime |
用户类型(user_type)可以根据具体需求来,我这里分成了十类,默认的话就是个人
① 企业法人;
② 企业法人内部单位核算的单位
③ 管理财政预算资金和预算外资金的财政部门
④ 实行财政管理的行政机关、事业单位;
⑤ 县级(含)以上军队、武警单位;
⑥ 外国驻华机构;
⑦ 社会团体;
⑧ 单位附属的食堂、招待所、幼儿园;
⑨ 外地常设机构;
⑩ 私营企业、个体经营承包户和个人。(默认值)
数据库采用mysql,版本5.7,因为只是做一个测试,所以我直接用docker部署了一个mysql(如果只是本地测试用本地数据库也可以),不得不说docker是真香了,学会docker以后配置服务器的环境真是太舒服了。不会docker的可以看一下我的这篇文章:Docker使用指南
我们先拉取官方mysql5.7镜像
docker pull mysql:5.7
在本地创建mysql的映射目录
mkdir -p /home/mysql/data /home/mysql/logs /home/mysql/conf
在/home/mysql/conf中创建 my.cnf 文件(用于配置参数来调整数据库的,我这里没用到,可以忽略)
touch my.cnf
创建容器,挂载数据,设置参数
docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=“你的密码” -d mysql:5.7
一些参数的作用如下
-d: 后台运行容器
-p 将容器的端口映射到本机的端口
-v 将主机目录挂载到容器的目录,用于数据再本地做持久化
-e 设置参数,主要是设置密码,把“你的密码”替换成你自己的密码即可
测试一下连接,可以看到数据库已经可以使用了,相比起不使用docker的话,我们要在服务器先找相应的安装包安装mysql,再配置远程连接,一系列杂七杂八的,配的不对卸载也很麻烦,但是用docker的话直接把容器和镜像删掉非常的方便。还记得我刚开始学linux时在服务器上配置各种环境的辛酸史,实在是过于痛苦,只能说docker,真香。
到这里用docker部署数据库就完成了