Springboot管理系统实战——需求分析

引言

本电商销售管理系统旨在为农产品销售提供一个简单、高效的管理平台,涵盖管理员端和用户端。管理员能够方便地查看农产品的基本信息,而用户可以进行商品浏览、选购等操作。

需求分析

用户端

  • 商品展示
  • 商品查看
  • 购物车
  • 商品费用计算
  • 订单查看

管理员端

  • 今日数据查看
  • 经营分析
  • 资金管理
  • 商品管理
  • 订单处理
  • 农产品信息展示(包括数量、单价、库存情况)

技术分析

前端

商户端所需经营分析和今日数据查看需要绘制数据图像,商品、订单等管理需要用到表格等组件。因此管理系统前端需要数据可视化,和一些展示组件。

因此前端采用以下技术:

后端

后端要接收前端返回的参数,确保数据合法性,另外项目分为管理员、用户两种角色,因此接口要判断用户角色,实现基于角色的权限认证,确保不同用户得到的响应数据不同。例如对于普通用户和商家,就不能访问其他用户的隐私数据。此外我们还需要数据库来存储用户数据,以及一个包管理器来引入各项工具。

综上所属,我们集成的后端工具有:

  • Maven:用于引入库的包管理器
  • java-jwt:用于实现登录Token认证
  • mysql-connector-java:数据库驱动
  • validation: 用于参数校验
  • lombok: 主要实现Getter和Setter方法
  • alibaba-druid:阿里数据库连接池,可以减少频繁创建数据库连接对象的开销

接下来我们来说明下重要的几项的版本:

  • Java 17
  • MySQL 8.0
  • SpringBoot 3

数据库设计

用户表

字段名数据类型主键自增默认值注释
idBIGINT用户 ID,主键
nameVARCHAR(255) 用户名
passwordVARCHAR(255) 密码
moneyTEXT 余额
saltVARCHAR(255) 盐值
roleVARCHAR(255) 角色
is_deletedTINYINT(1) 是否删除 true: 已删除,false: 未删除
created_timeTIMESTAMP CURRENT_TIMESTAMP创建时间
updated_timeTIMESTAMP CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间

用户地址表

idBIGINT地址 ID,主键
user_idBIGINT 用户 ID
addressVARCHAR(255) 地址
is_deletedTINYINT(1) 是否删除 true: 已删除,false: 未删除
created_timeTIMESTAMP CURRENT_TIMESTAMP创建时间
updated_timeTIMESTAMP CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

商品表

字段名数据类型主键自增默认值注释
idBIGINT商品 ID,主键
nameVARCHAR(255) 商品名称
priceVARCHAR(255) 商品价格
totalBIGINT 商品总量
cntBIGINT 商品剩余量
picLONGBLOB 商品图片
is_deletedTINYINT(1) 是否删除 true: 已删除,false: 未删除
created_timeTIMESTAMP CURRENT_TIMESTAMP创建时间
updated_timeTIMESTAMP CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间
user_idBIGINT 所属商家ID

购物车表

字段名数据类型主键自增默认值注释
idBIGINT购物车 ID,主键
user_idBIGINT 用户 ID
commodity_idBIGINT 商品 ID
cntBIGINT 选中数量
is_deletedTINYINT(1) 是否删除 true: 已删除,false: 未删除
created_timeTIMESTAMP CURRENT_TIMESTAMP创建时间
updated_timeTIMESTAMP CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间

订单表

字段名数据类型主键自增默认值注释
idBIGINT订单 ID,主键
user_idBIGINT 用户 ID
commodity_idBIGINT 商品 ID
cntBIGINT 选中数量
totalTEXT 总价
is_deletedTINYINT(1) 是否删除 true: 已删除,false: 未删除
created_timeTIMESTAMP CURRENT_TIMESTAMP创建时间
updated_timeTIMESTAMP 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='订单表';
最后修改:2025 年 04 月 15 日
如果觉得我的文章对你有用,请随意赞赏