Springboot管理系统实战——需求分析
引言
本电商销售管理系统旨在为农产品销售提供一个简单、高效的管理平台,涵盖管理员端和用户端。管理员能够方便地查看农产品的基本信息,而用户可以进行商品浏览、选购等操作。
需求分析
用户端
- 商品展示
- 商品查看
- 购物车
- 商品费用计算
- 订单查看
管理员端
- 今日数据查看
- 经营分析
- 资金管理
- 商品管理
- 订单处理
- 农产品信息展示(包括数量、单价、库存情况)
技术分析
前端
商户端所需经营分析和今日数据查看需要绘制数据图像,商品、订单等管理需要用到表格等组件。因此管理系统前端需要数据可视化,和一些展示组件。
因此前端采用以下技术:
- Vite: Vue项目构建框架
- Element Plus: 基于 Vue 3,面向设计师和开发者的组件库
- Vue-ECharts: 数据可视化组件ECharts Vue版本。
- Vue Router: Vue前端路由组件
后端
后端要接收前端返回的参数,确保数据合法性,另外项目分为管理员、用户两种角色,因此接口要判断用户角色,实现基于角色的权限认证,确保不同用户得到的响应数据不同。例如对于普通用户和商家,就不能访问其他用户的隐私数据。此外我们还需要数据库来存储用户数据,以及一个包管理器来引入各项工具。
综上所属,我们集成的后端工具有:
- Maven:用于引入库的包管理器
- java-jwt:用于实现登录Token认证
- mysql-connector-java:数据库驱动
- validation: 用于参数校验
- lombok: 主要实现Getter和Setter方法
- alibaba-druid:阿里数据库连接池,可以减少频繁创建数据库连接对象的开销
接下来我们来说明下重要的几项的版本:
- Java 17
- MySQL 8.0
- SpringBoot 3
数据库设计
用户表
字段名 | 数据类型 | 主键 | 自增 | 默认值 | 注释 |
---|---|---|---|---|---|
id | BIGINT | √ | √ | 无 | 用户 ID,主键 |
name | VARCHAR(255) | 无 | 用户名 | ||
password | VARCHAR(255) | 无 | 密码 | ||
money | TEXT | 无 | 余额 | ||
salt | VARCHAR(255) | 无 | 盐值 | ||
role | VARCHAR(255) | 无 | 角色 | ||
is_deleted | TINYINT(1) | 无 | 是否删除 true: 已删除,false: 未删除 | ||
created_time | TIMESTAMP | CURRENT_TIMESTAMP | 创建时间 | ||
updated_time | TIMESTAMP | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
用户地址表
id | BIGINT | √ | √ | 无 | 地址 ID,主键 |
---|---|---|---|---|---|
user_id | BIGINT | 无 | 用户 ID | ||
address | VARCHAR(255) | 无 | 地址 | ||
is_deleted | TINYINT(1) | 无 | 是否删除 true: 已删除,false: 未删除 | ||
created_time | TIMESTAMP | CURRENT_TIMESTAMP | 创建时间 | ||
updated_time | TIMESTAMP | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
商品表
字段名 | 数据类型 | 主键 | 自增 | 默认值 | 注释 |
---|---|---|---|---|---|
id | BIGINT | √ | √ | 无 | 商品 ID,主键 |
name | VARCHAR(255) | 无 | 商品名称 | ||
price | VARCHAR(255) | 无 | 商品价格 | ||
total | BIGINT | 无 | 商品总量 | ||
cnt | BIGINT | 无 | 商品剩余量 | ||
pic | LONGBLOB | 无 | 商品图片 | ||
is_deleted | TINYINT(1) | 无 | 是否删除 true: 已删除,false: 未删除 | ||
created_time | TIMESTAMP | CURRENT_TIMESTAMP | 创建时间 | ||
updated_time | TIMESTAMP | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | ||
user_id | BIGINT | 无 | 所属商家ID |
购物车表
字段名 | 数据类型 | 主键 | 自增 | 默认值 | 注释 |
---|---|---|---|---|---|
id | BIGINT | √ | √ | 无 | 购物车 ID,主键 |
user_id | BIGINT | 无 | 用户 ID | ||
commodity_id | BIGINT | 无 | 商品 ID | ||
cnt | BIGINT | 无 | 选中数量 | ||
is_deleted | TINYINT(1) | 无 | 是否删除 true: 已删除,false: 未删除 | ||
created_time | TIMESTAMP | CURRENT_TIMESTAMP | 创建时间 | ||
updated_time | TIMESTAMP | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
订单表
字段名 | 数据类型 | 主键 | 自增 | 默认值 | 注释 |
---|---|---|---|---|---|
id | BIGINT | √ | √ | 无 | 订单 ID,主键 |
user_id | BIGINT | 无 | 用户 ID | ||
commodity_id | BIGINT | 无 | 商品 ID | ||
cnt | BIGINT | 无 | 选中数量 | ||
total | TEXT | 无 | 总价 | ||
is_deleted | TINYINT(1) | 无 | 是否删除 true: 已删除,false: 未删除 | ||
created_time | TIMESTAMP | CURRENT_TIMESTAMP | 创建时间 | ||
updated_time | TIMESTAMP | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
初始化SQL语句
综合上述数据库各表结构,我们可以写出数据库初始化语句
CREATE DATABASE db_agriculture;
USE db_agriculture;
CREATE TABLE tb_user (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID,主键',
`name` VARCHAR(255) COMMENT '用户名',
`password` VARCHAR(255) COMMENT '密码',
`money` TEXT COMMENT '余额',
salt VARCHAR(255) COMMENT '盐值',
`role` VARCHAR(255) COMMENT '角色',
is_deleted TINYINT(1) COMMENT '是否删除 true: 已删除, false: 未删除',
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) COMMENT='用户表';
CREATE TABLE tb_address (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '地址ID,主键',
user_id BIGINT COMMENT '用户ID',
`address` VARCHAR(255) COMMENT '地址',
is_deleted TINYINT(1) COMMENT '是否删除 true: 已删除, false: 未删除',
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) COMMENT='用户地址表';
CREATE TABLE tb_commodity (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID,主键',
`name` VARCHAR(255) COMMENT '商品名称',
price VARCHAR(255) COMMENT '商品价格',
total BIGINT COMMENT '商品总量',
cnt BIGINT COMMENT '商品剩余量',
pic LONGBLOB COMMENT '商品图片',
is_deleted TINYINT(1) COMMENT '是否删除 true: 已删除, false: 未删除',
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
user_id BIGINT COMMENT '所属商家ID'
) COMMENT='商品表';
CREATE TABLE tb_cart (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '购物车ID,主键',
user_id BIGINT COMMENT '用户ID',
commodity_id BIGINT COMMENT '商品ID',
cnt BIGINT COMMENT '选中数量',
is_deleted TINYINT(1) COMMENT '是否删除 true: 已删除, false: 未删除',
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) COMMENT='购物车表';
CREATE TABLE tb_order (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID,主键',
user_id BIGINT COMMENT '用户ID',
commodity_id BIGINT COMMENT '商品ID',
cnt BIGINT COMMENT '选中数量',
total TEXT COMMENT '总价',
is_deleted TINYINT(1) COMMENT '是否删除 true: 已删除, false: 未删除',
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)COMMENT='订单表';