基于Spring Boot的超市管理系统详细设计方案

基于Spring Boot的超市管理系统详细设计方案

1. 系统总体设计

1.1 系统架构图

┌─────────────────────────────────────────────────┐
│                  客户端层                      │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  │
│  │   Web端   │  │ 移动端App │  │ POS终端   │  │
│  └───────────┘  └───────────┘  └───────────┘  │
└─────────────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────┐
│                  API网关层                      │
│  ┌───────────────────────────────────────────┐  │
│  │  认证鉴权、请求路由、负载均衡、限流熔断   │  │
│  └───────────────────────────────────────────┘  │
└─────────────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────┐
│                  微服务层                       │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  │
│  │ 商品服务  │  │ 订单服务  │  │ 会员服务  │  │
│  └───────────┘  └───────────┘  └───────────┘  │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  │
│  │ 库存服务  │  │ 员工服务  │  │ 报表服务  │  │
│  └───────────┘  └───────────┘  └───────────┘  │
└─────────────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────┐
│                  数据存储层                     │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐  │
│  │  MySQL    │  │  Redis    │  │ Elastic   │  │
│  └───────────┘  └───────────┘  └───────────┘  │
└─────────────────────────────────────────────────┘

1.2 技术架构选型

层级 技术选型
前端 Vue.js + Element UI (Web端), UniApp (移动端), Electron (POS终端)
网关 Spring Cloud Gateway
服务框架 Spring Boot 2.7 + Spring Cloud Alibaba
安全认证 Spring Security + JWT + OAuth2
数据持久化 Spring Data JPA + MyBatis Plus + QueryDSL
缓存 Redis (分布式缓存/会话管理)
消息队列 RabbitMQ (订单异步处理/库存扣减)
搜索引擎 Elasticsearch (商品搜索)
监控 Spring Boot Admin + Prometheus + Grafana
部署 Docker + Kubernetes

2. 数据库设计

2.1 核心ER图

┌─────────────┐       ┌─────────────┐       ┌─────────────┐
│  员工表     │       │  角色表     │       │ 权限表      │
│ (employee)  │───┐   │ (role)      │───┐   │ (permission)│
└─────────────┘   │   └─────────────┘   │   └─────────────┘
                  │                     │
┌─────────────┐   │   ┌─────────────┐   │
│  会员表     │   │   │ 商品分类表   │   │
│ (member)    │   │   │ (category)  │   │
└─────────────┘   │   └─────────────┘   │
                  │                     │
┌─────────────┐   │   ┌─────────────┐   │
│  订单表     │───┘   │  商品表     │───┘
│ (order)     │       │ (product)   │
└─────────────┘       └─────────────┘
      │                     │
      │                     │
      ▼                     ▼
┌─────────────┐       ┌─────────────┐
│订单明细表   │       │ 库存记录表   │
│(order_item) │       │(inventory_log)│
└─────────────┘       └─────────────┘
      │                     ▲
      │                     │
      └─────────────────────┘

2.2 数据表详细设计

2.2.1 员工管理模块

员工表(employee)

字段名 类型 约束 描述
id BIGINT PK, AI 员工ID
username VARCHAR(50) UNIQUE, NN 登录用户名
password VARCHAR(100) NN 加密密码
real_name VARCHAR(50) NN 真实姓名
gender TINYINT 性别(0-女,1-男)
phone VARCHAR(20) NN 联系电话
email VARCHAR(100) 电子邮箱
status TINYINT NN, D=1 状态(0-禁用,1-启用)
hire_date DATE 入职日期
role_id BIGINT FK, NN 角色ID
create_time DATETIME NN 创建时间
update_time DATETIME 更新时间

角色表(role)

字段名 类型 约束 描述
id BIGINT PK, AI 角色ID
name VARCHAR(50) UNIQUE, NN 角色名称
code VARCHAR(50) UNIQUE, NN 角色编码
description VARCHAR(200) 角色描述
create_time DATETIME NN 创建时间

权限表(permission)

字段名 类型 约束 描述
id BIGINT PK, AI 权限ID
name VARCHAR(50) NN 权限名称
code VARCHAR(50) UNIQUE, NN 权限编码
type TINYINT NN 类型(1-菜单,2-按钮)
parent_id BIGINT 父权限ID
path VARCHAR(200) 前端路由路径
component VARCHAR(200) 前端组件
icon VARCHAR(50) 图标
sort INT D=0 排序
create_time DATETIME NN 创建时间

角色权限关联表(role_permission)

字段名 类型 约束 描述
role_id BIGINT PK, FK 角色ID
permission_id BIGINT PK, FK 权限ID
2.2.2 商品管理模块

商品分类表(category)

字段名 类型 约束 描述
id BIGINT PK, AI 分类ID
name VARCHAR(50) NN 分类名称
parent_id BIGINT 父分类ID
level TINYINT NN 层级(1-一级,2-二级)
sort INT D=0 排序
status TINYINT NN, D=1 状态(0-禁用,1-启用)
create_time DATETIME NN 创建时间

商品表(product)

字段名 类型 约束 描述
id BIGINT PK, AI 商品ID
name VARCHAR(100) NN 商品名称
category_id BIGINT FK, NN 分类ID
barcode VARCHAR(50) UNIQUE 条形码
price DECIMAL(10,2) NN 销售价
cost DECIMAL(10,2) NN 成本价
stock INT NN, D=0 库存数量
warning_stock INT 库存预警值
unit VARCHAR(10) NN 单位(件/个/千克等)
status TINYINT NN, D=1 状态(0-下架,1-上架)
supplier_id BIGINT FK 供应商ID
image VARCHAR(255) 商品图片
description TEXT 商品描述
create_time DATETIME NN 创建时间
update_time DATETIME 更新时间

供应商表(supplier)

字段名 类型 约束 描述
id BIGINT PK, AI 供应商ID
name VARCHAR(100) NN 供应商名称
contact_person VARCHAR(50) NN 联系人
phone VARCHAR(20) NN 联系电话
address VARCHAR(200) 地址
email VARCHAR(100) 电子邮箱
status TINYINT NN, D=1 状态(0-禁用,1-启用)
create_time DATETIME NN 创建时间
2.2.3 库存管理模块

库存记录表(inventory_log)

字段名 类型 约束 描述
id BIGINT PK, AI 记录ID
product_id BIGINT FK, NN 商品ID
quantity INT NN 变更数量(正数-入库,负数-出库)
type TINYINT NN 类型(1-采购入库,2-销售出库…)
operator VARCHAR(50) NN 操作人员
order_no VARCHAR(50) 关联单号
remark VARCHAR(200) 备注
create_time DATETIME NN 创建时间
2.2.4 销售管理模块

订单表(order)

字段名 类型 约束 描述
id BIGINT PK, AI 订单ID
order_no VARCHAR(50) UNIQUE, NN 订单编号
member_id BIGINT FK 会员ID
total_amount DECIMAL(10,2) NN 订单总金额
discount_amount DECIMAL(10,2) NN, D=0 折扣金额
actual_amount DECIMAL(10,2) NN 实付金额
payment_method TINYINT NN 支付方式(1-现金,2-支付宝…)
status TINYINT NN, D=0 状态(0-待支付,1-已完成…)
cashier_id BIGINT FK, NN 收银员ID
remark VARCHAR(200) 备注
create_time DATETIME NN 创建时间
payment_time DATETIME 支付时间

订单明细表(order_item)

字段名 类型 约束 描述
id BIGINT PK, AI 明细ID
order_id BIGINT FK, NN 订单ID
product_id BIGINT FK, NN 商品ID
product_name VARCHAR(100) NN 商品名称(快照)
price DECIMAL(10,2) NN 单价(快照)
quantity INT NN 数量
subtotal DECIMAL(10,2) NN 小计金额
2.2.5 会员管理模块

会员表(member)

字段名 类型 约束 描述
id BIGINT PK, AI 会员ID
name VARCHAR(50) NN 会员姓名
gender TINYINT 性别(0-女,1-男)
phone VARCHAR(20) UNIQUE, NN 手机号
birthday DATE 生日
level TINYINT NN, D=0 等级(0-普通,1-银卡,2-金卡)
total_points INT NN, D=0 累计积分
current_points INT NN, D=0 当前可用积分
status TINYINT NN, D=1 状态(0-禁用,1-启用)
register_time DATETIME NN 注册时间
last_visit_time DATETIME 最后访问时间

会员积分记录表(member_points_log)

字段名 类型 约束 描述
id BIGINT PK, AI 记录ID
member_id BIGINT FK, NN 会员ID
change_points INT NN 变更积分(正-增加,负-减少)
type TINYINT NN 类型(1-消费获得,2-兑换使用…)
order_no VARCHAR(50) 关联订单号
remark VARCHAR(200) 备注
create_time DATETIME NN 创建时间

3. 接口设计规范

3.1 RESTful API设计

  • 资源命名: 使用复数名词表示资源集合

    • 商品: /api/products
    • 订单: /api/orders
  • HTTP方法:

    • GET: 获取资源
    • POST: 创建资源
    • PUT: 全量更新资源
    • PATCH: 部分更新资源
    • DELETE: 删除资源
  • 状态码:

    • 200 OK: 成功请求
    • 201 Created: 资源创建成功
    • 400 Bad Request: 客户端错误
    • 401 Unauthorized: 未认证
    • 403 Forbidden: 无权限
    • 404 Not Found: 资源不存在
    • 500 Internal Server Error: 服务器错误

3.2 通用响应格式

{
  "code": 200,
  "message": "success",
  "data": {
    // 实际数据
  },
  "timestamp": 1634567890123
}

4. 安全设计

4.1 认证授权流程

  1. 用户登录: 提交用户名密码获取JWT令牌
  2. API访问: 在请求头携带Authorization: Bearer
  3. 权限验证: 网关和服务层双重验证
  4. 令牌刷新: 使用refresh token获取新access token

4.2 敏感数据保护

  • 密码: BCrypt加密存储
  • 支付信息: 加密存储
  • 日志脱敏: 手机号、身份证号等敏感信息脱敏记录

5. 性能与扩展性设计

5.1 缓存策略

  • 商品信息: Redis缓存,过期时间1小时
  • 库存信息: Redis + 本地缓存,库存变更时主动失效
  • 会员信息: Redis缓存,过期时间30分钟

5.2 高并发处理

  • 库存扣减: Redis原子操作 + 消息队列异步处理
  • 订单创建: 消息队列削峰填谷
  • 读写分离: 查询操作走从库

5.3 扩展性考虑

  • 微服务化: 各模块可独立部署扩展
  • 数据库分片: 按业务垂直分库,按时间水平分表
  • 服务发现: 使用Nacos实现动态服务发现与负载均衡

6. 部署架构

6.1 生产环境部署方案

┌─────────────────────────────────────────────────┐
│                  负载均衡(Nginx)                │
└─────────────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────┐
│                  API网关集群                    │
└─────────────────────────────────────────────────┘
                       │
                       ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ 商品服务  │ │ 订单服务  │ │ 会员服务  │ │ 库存服务  │
└───────────┘ └───────────┘ └───────────┘ └───────────┘
       │             │             │             │
       ▼             ▼             ▼             ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ MySQL主库 │ │ MySQL从库 │ │ Redis集群 │ │ Elastic   │
└───────────┘ └───────────┘ └───────────┘ └───────────┘

6.2 监控方案

  • 应用监控: Spring Boot Actuator + Prometheus + Grafana
  • 日志收集: ELK (Elasticsearch + Logstash + Kibana)
  • 链路追踪: SkyWalking
  • 报警机制: 异常日志报警 + 性能指标报警

你可能感兴趣的:(spring,boot,后端,java,毕业设计,课程设计,毕设)