概述

说在前面

  • 对于目前项目已知或未知的不造成严重影响的Bug,均不再做任何修改
  • 页面部分字段并未进行约束例如会员余额、积分,商品数量可以为负数等
  • 页面完全未进行响应式设计,非类1920×1080分辨率下访问将展示非预期效果的页面
  • 数据库将在答辩前(预计2021/07/28左右)回滚,在此之前可以对项目进行任意操作

框架

  • 前端:React、Antd
  • 后端:Python Django Rest Framework

帮助文档

项目地址

数据库设计

  • 系统用户user
  • 会员/会员卡vip
  • 留言信息message
  • 商品goods 销售信息sales_info
  • 兑换商品point_goods 兑换信息exchange_info

其中exchange_info和sales_info设置了外键字段并实现了相关接口,但为了节省开发时间(指肝游戏的时间),只有<兑换商品>功能为多表操作,其他操作均为单表操作

具体查询结果以http://spim-api.zzuli.love/exchange_info/1 为例

其中point_goods、vip均为外键对应表数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"id": 1,
"point_goods_id": 7,
"vip_id": 1,
"point": 3280,
"create_time": "2021-07-25T18:18:48.425692+08:00",
"update_time": "2021-07-25T18:18:48.425733+08:00",
"point_goods": {
"id": 7,
"name": "328",
"number": 99,
"point": 3280,
"create_time": "2021-07-25T11:03:53.935998+08:00",
"update_time": "2021-07-25T18:18:48.594778+08:00"
},
"vip": {
"id": 1,
"name": "绯色下午茶",
"sex": "",
"phone": "12885191771",
"account_balance": "10000.00",
"point": 2900,
"identity": "",
"birthday": null,
"address": "",
"mail": "",
"create_time": "2021-07-25T10:49:41.077944+08:00",
"update_time": "2021-07-25T18:26:16.372045+08:00"
}
}

答辩要点说明

  • 前端代码均进行了简单封装,所有类似功能操作只需改动columns字段名与Form字段名
  • 仅/admin页进行了权限校验,其他页均可直接访问
  • 在主页http://spim.zzuli.love/ ,点击管理后,检查是否登录(cookie是否存在登录信息),若无则跳转到登录页面
  • 用户登录后会对last_ip更改,对login_times进行+1操作
  • 用户密码进行了仅一次的md5加密
  • 退出登录清除cookie的登录信息并跳转到主页
  • 除<积分兑换>操作外,其他所有操作均为单表简单增删改查
  • <积分操作>在添加exchange_info外,还会将对应point_goods数量–,vip积分–
  • 对于<积分兑换><增加销售信息>操作,若对应外键id不存在,由于外键约束操作不会成功
  • 所有操作所变动的信息均显示在console(F12)中

演示流程

  1. 主页-管理,跳转到登录页
  2. 对管理页进行一些操作
  3. <积分兑换>,并查看<会员积分统计>与<积分兑换商品>相应信息的改动
  4. 退出登录,并演示无法进入管理页
  5. 主页-留言,重新登录并产看留言信息