snack-mall/功能设计文档.md

35 KiB
Raw Blame History

基于 SpringBoot + Vue 的零食商城系统 — 功能设计文档

文档版本v1.2
创建日期2026-06-01
更新日期2026-06-01新增系统公告、优惠券、限时抢购活动模块
适用项目:零食商城毕业设计


目录

  1. 系统概述
  2. 系统架构
  3. 功能模块设计
  4. 数据库设计
  5. 技术亮点
  6. 项目目录结构
  7. 接口设计规范
  8. 毕设论文结构建议

一、系统概述

本项目是一个基于 SpringBoot + Vue3 前后端分离架构的零食电商平台,旨在为用户提供便捷的在线零食购物体验,同时为管理员提供高效的商品与订单管理后台。

核心目标

  • 用户端:商品浏览、搜索、购物车、下单支付、订单追踪、个人中心、在线客服聊天、系统公告、优惠券、限时抢购
  • 管理端:数据统计可视化、商品管理、订单管理、用户管理、客服消息处理、公告管理、优惠券管理、活动管理、系统配置

二、系统架构

┌─────────────────────────────────────────────────────────┐
│                      前端层 (Vue3)                        │
├─────────────────────────┬───────────────────────────────┤
│      用户端 (前台)       │        管理端 (后台)            │
│  - 首页/商品浏览/购物车   │  - 数据可视化仪表盘              │
│  - 订单/个人中心         │  - 商品/订单/用户管理            │
│  - 登录注册              │  - 系统设置                     │
│  - 在线客服聊天          │  - 客服消息处理                  │
└─────────────────────────┴───────────────────────────────┘
                          │
┌─────────────────────────┴───────────────────────────────┐
│              后端层 (SpringBoot + MyBatis-Plus)           │
│  - RESTful API 接口                                     │
│  - WebSocket 实时消息推送                                │
│  - JWT 认证 / 权限控制                                   │
│  - Redis 缓存 / 消息队列                                 │
│  - MySQL 数据持久化                                      │
└─────────────────────────────────────────────────────────┘

技术栈

层级 技术选型 版本建议
前端用户端 Vue3 + Vant Vue 3.3+
前端管理端 Vue3 + Element Plus Vue 3.3+
后端框架 SpringBoot 2.7.x / 3.x
ORM 框架 MyBatis-Plus 3.5.x
数据库 MySQL 8.0
缓存 Redis 6.x / 7.x
实时通信 WebSocket (Spring WebSocket)
构建工具 Maven 3.8+
接口文档 Knife4j (Swagger) 4.x

三、功能模块设计

3.1 用户端功能(前台)

3.1.1 首页模块

功能点 描述 优先级
轮播图展示 顶部广告位,支持点击跳转商品详情,后台可配置
分类导航 零食分类快速入口(坚果、糖果、膨化、肉脯、蜜饯等)
热销推荐 基于销量排序的 Top N 商品推荐
新品上架 最新上架商品展示(按上架时间倒序)
限时特惠 折扣商品专区展示

3.1.2 商品模块

功能点 描述 优先级
分类浏览 多级分类筛选(一级:休闲零食 / 二级:坚果炒货 / 三级:夏威夷果)
商品搜索 关键词搜索 + 搜索历史记录 + 热门搜索标签
商品列表 综合排序 / 销量排序 / 价格升序降序,分页加载
商品详情 商品轮播图、价格展示、规格选择(口味/重量)、库存显示、商品详情图、用户评价列表

3.1.3 购物车模块

功能点 描述 优先级
添加商品 选择规格、数量加入购物车,未登录跳转登录
购物车管理 商品全选 / 单选、修改数量、删除单个 / 批量删除、清空购物车
价格计算 实时计算选中商品总价,展示优惠后价格

3.1.4 订单模块

功能点 描述 优先级
确认订单 选择收货地址、展示商品清单、填写备注信息、计算实付金额
下单支付 模拟支付流程(适合毕设演示),支付成功后扣减库存
订单列表 全部 / 待付款 / 待发货 / 待收货 / 已完成 / 已取消,分页展示
订单详情 订单信息、商品明细、物流信息(模拟)、订单状态时间轴
确认收货 用户点击确认收货,订单状态变更为已完成
取消订单 待付款状态下用户可主动取消订单

3.1.5 用户中心模块

功能点 描述 优先级
个人信息 查看和修改昵称、头像上传、手机号绑定
收货地址 新增 / 编辑 / 删除收货地址,设置默认地址
我的收藏 收藏商品列表,支持取消收藏,跳转商品详情
修改密码 原密码验证后修改登录密码

3.1.6 客服聊天模块(用户端)

功能点 描述 优先级
发起会话 用户点击"联系客服"按钮,创建或恢复与客服的聊天会话
实时发送消息 基于 WebSocket 实时发送文字消息
发送图片 用户可上传并发送图片(商品截图、问题截图等)
历史消息记录 进入聊天页自动加载历史消息(分页上拉加载更多)
消息状态显示 显示消息发送时间、已读 / 未读状态
客服状态显示 显示客服在线 / 离线状态,离线时提示留言
常见问题快捷回复 提供常见问题入口(如:订单查询 / 退换货 / 物流查询),点击自动发送预设问题
会话结束 用户可主动结束会话

3.1.7 系统公告模块(用户端)

功能点 描述 优先级
首页公告横幅 首页顶部滚动展示最新公告,点击查看详情
公告列表 公告中心页面,按时间倒序展示所有有效公告
公告详情 查看公告完整内容(富文本),展示发布时间
未读公告提示 用户登录后,若有未读新公告则弹出提示弹窗

3.1.8 优惠券模块(用户端)

功能点 描述 优先级
领券中心 展示当前可领取的优惠券列表(满减券/折扣券/无门槛券)
领取优惠券 登录用户点击领取,每人每张限领一次,库存不足则禁止领取
我的优惠券 查看已领取的优惠券(未使用 / 已使用 / 已过期),分 Tab 展示
下单使用优惠券 确认订单页选择可用优惠券,自动计算优惠后价格
优惠券有效期提示 优惠券临近到期(剩余 3 天内)展示"即将过期"红色标签

3.1.9 限时抢购模块(用户端)

功能点 描述 优先级
抢购活动列表 首页展示当前进行中及即将开始的抢购活动场次
活动倒计时 未开始活动显示开始倒计时,进行中活动显示结束倒计时
抢购商品列表 展示活动内所有商品,标注原价、抢购价、库存进度条
立即抢购 点击"立即抢购"跳转订单确认页,使用抢购价下单,库存为 0 时按钮置灰
防超卖保障 基于 Redis 原子操作扣减库存,防止超卖
购买限制 每人每场活动每个商品限购数量可配置(如限购 2 件)
活动历史 用户可查看已结束的历史抢购活动

3.2 管理端功能(后台)

3.2.1 登录模块

功能点 描述 优先级
管理员登录 账号 + 密码 + 图形验证码登录

3.2.2 仪表盘模块

功能点 描述 优先级
核心数据卡片 今日订单数、今日销售额、总用户数、总商品数
销售趋势图 近 7 天 / 近 30 天销售额折线图ECharts
订单状态分布 订单状态饼图(待付款 / 待发货 / 待收货 / 已完成 / 已取消)
热销商品 Top10 销量前 10 商品柱状图

3.2.3 用户管理模块

功能点 描述 优先级
用户列表 分页查询,支持按用户名 / 手机号模糊搜索
状态管理 启用 / 禁用用户账号(禁用后无法登录)
查看详情 查看用户基本信息、历史订单记录

3.2.4 商品分类模块

功能点 描述 优先级
分类列表 树形结构展示一级 / 二级分类
分类管理 新增 / 编辑 / 删除分类
分类排序 手动设置排序号,控制前台展示顺序

3.2.5 商品管理模块

功能点 描述 优先级
商品列表 分页查询,支持按名称 / 分类 / 上下架状态筛选
商品发布 填写商品信息(名称/简介/详情)、上传主图和详情图、设置 SKU 规格(口味/重量/价格/库存)
商品编辑 修改商品所有信息
上下架控制 单独或批量上架 / 下架商品,控制前台展示
库存管理 查看和修改各规格商品库存数量

3.2.6 订单管理模块

功能点 描述 优先级
订单列表 分页查询,支持按订单号 / 用户名 / 订单状态筛选
订单详情 查看订单完整信息、收货地址、商品明细、金额明细
订单发货 填写物流公司和物流单号,变更订单状态为"待收货"
取消订单 管理员主动取消订单(模拟退款流程)

3.2.7 轮播图管理模块

功能点 描述 优先级
轮播图列表 增删改查轮播图
跳转配置 设置点击图片后跳转的商品 ID 或外部链接
排序控制 拖拽或手动设置轮播图展示顺序

3.2.8 系统管理模块(可选)

功能点 描述 优先级
管理员管理 超级管理员可添加 / 编辑 / 删除普通管理员账号
角色权限 基于角色的权限控制RBAC

3.2.9 客服消息管理模块(后台)

功能点 描述 优先级
会话列表 展示所有用户发起的聊天会话,显示用户信息、最新消息、未读消息数
实时接收消息 基于 WebSocket 实时接收用户消息,浏览器标题栏闪烁提示未读
回复消息 客服输入文字或发送图片回复用户
会话状态管理 标记会话为处理中 / 已解决 / 待处理
历史会话查询 查询已结束的历史会话记录,支持按用户名 / 时间筛选
快捷回复模板 管理预设快捷回复话术(如:您好,感谢咨询...),一键插入消息框
转接会话 将当前会话转接给其他在线客服

3.2.10 系统公告管理模块(后台)

功能点 描述 优先级
公告列表 分页查询所有公告,支持按标题 / 状态 / 时间筛选
发布公告 填写公告标题、正文内容(富文本),设置生效时间和失效时间
编辑公告 修改已发布公告的内容和有效期
公告状态控制 手动上线 / 下线公告,下线后前台不再显示
公告置顶 设置重要公告为置顶,优先在前台展示

3.2.11 优惠券管理模块(后台)

功能点 描述 优先级
优惠券列表 分页查询所有优惠券,支持按名称 / 类型 / 状态筛选
创建优惠券 配置优惠券类型(满减/折扣/无门槛)、面额/折扣率、使用门槛、发放总量、每人限领数、有效期
编辑优惠券 修改未开始发放的优惠券信息
上下架控制 控制优惠券是否在领券中心展示
领取记录查询 查询指定优惠券的领取明细(用户名、领取时间、使用状态)
数据统计 展示每张优惠券的已领数量 / 总量、已使用数量

3.2.12 限时抢购活动管理模块(后台)

功能点 描述 优先级
活动列表 分页查询所有活动,按状态(未开始 / 进行中 / 已结束)筛选
创建活动 填写活动名称、活动场次时间段(开始时间 / 结束时间)
添加活动商品 从商品库中选择商品加入活动,配置抢购价格、抢购库存、每人限购数量
移除活动商品 活动未开始时可移除商品,进行中活动不可删除
活动状态管理 手动提前结束活动(结束后恢复商品正常价格)
抢购数据统计 查看每场活动的总参与人数、总销售量、总销售额

3.3 客服聊天模块

3.3.1 整体交互流程

用户点击"联系客服"
        │
        ▼
  检查是否已有进行中的会话
        │
   有 ──┤── 无
        │        │
        ▼        ▼
  恢复历史会话   创建新会话(生成 session_id
        │        │
        └───┬────┘
            ▼
   建立 WebSocket 连接
            │
     ┌──────┴──────┐
     │             │
   用户发消息    客服回复消息
     │             │
     └──────┬──────┘
            ▼
     消息实时推送 + 持久化到 MySQL

3.3.2 消息类型

消息类型 type 值 说明
文本消息 text 普通文字内容
图片消息 image 图片 URL
系统消息 system 会话创建 / 结束 / 转接提示
快捷问题 quick 用户点击快捷问题入口发送的预设文本

3.3.3 技术实现方案

技术点 方案 说明
实时通信 Spring WebSocket + STOMP 后端实现 WebSocket 服务,前端通过 stomp.js 连接
连接认证 WebSocket 握手时携带 JWT Token 握手拦截器中验证 Token防止未登录用户建立连接
消息持久化 每条消息写入 chat_message 保障历史消息可查
在线状态 Redis 存储在线用户集合 key: chat:online:users,客服登录 / 断开时更新
未读消息数 Redis 计数器 key: chat:unread:{sessionId},客服回复后清零
离线消息 消息先持久化,用户重连后推送 保障消息不丢失

3.4 系统公告模块

3.4.1 功能流程

管理员后台发布公告(设置有效期)
        │
        ▼
公告写入数据库,状态为"已上线"
        │
   ┌────┴────┐
   ▼         ▼
首页横幅    公告列表页
滚动展示    按时间倒序展示
   │
   ▼
用户登录时检查是否有未读新公告
   │
   ▼
弹出公告提示弹窗(标记已读后不再弹出)

3.4.2 公告类型

类型 说明 前台展示位置
普通公告 常规运营通知 公告列表
重要公告 系统升级、重大活动通知 首页横幅 + 弹窗
活动公告 促销、节日活动预告 首页横幅 + 公告列表

3.5 优惠券模块

3.5.1 优惠券类型设计

类型 字段标识 说明 举例
满减券 full_reduce 满指定金额减固定金额 满 100 减 20
折扣券 discount 按折扣率打折,可设置最高抵扣上限 9 折,最高抵扣 50 元
无门槛券 no_threshold 无需满额,直接抵扣固定金额 直减 5 元

3.5.2 优惠券使用规则

  • 每人每张优惠券限领 N 张(后台可配置)
  • 优惠券有固定有效期(如:领取后 7 天内有效,或指定日期范围)
  • 下单时同一笔订单只能使用一张优惠券
  • 取消订单后优惠券自动退回(模拟实现)
  • 过期未使用的优惠券不可继续使用

3.5.3 优惠金额计算逻辑

用户选择优惠券
      │
      ▼
校验:订单金额 >= 使用门槛?
      │
   是 │ 否(不可用,置灰)
      ▼
计算优惠金额:
  满减券:优惠金额 = 券面值
  折扣券:优惠金额 = min(订单金额 × (1 - 折扣率), 最高抵扣)
  无门槛券:优惠金额 = 券面值
      │
      ▼
实付金额 = 订单金额 - 优惠金额(最低 0.01 元)

3.6 限时抢购活动模块

3.6.1 活动状态流转

创建活动(未开始)
      │
到达开始时间
      │
      ▼
活动进行中 ──── 库存耗尽 ──── 活动结束(售罄)
      │
到达结束时间 / 管理员手动结束
      │
      ▼
活动已结束

3.6.2 防超卖设计(核心技术点)

用户发起抢购请求
        │
        ▼
① Redis DECR 原子操作扣减库存key: seckill:stock:{activityId}:{productId}
        │
   库存 >= 0 
   是 │  否(返回"已抢完"
        │
        ▼
② 将下单任务写入异步队列Redis List / MQ
        │
        ▼
③ 后台消费队列,创建订单写入 MySQL
        │
        ▼
④ 返回用户"抢购成功,请尽快付款"

3.6.3 限购校验逻辑

校验项 说明
活动状态校验 活动必须处于"进行中"状态
库存校验 Redis 中库存必须 > 0
重复购买校验 同一用户同一活动同一商品购买数量不超过限购数
登录校验 未登录用户跳转登录页

4.1 核心数据表清单

表名 中文名 说明
user 用户表 存储普通注册用户
admin 管理员表 存储后台管理员
category 商品分类表 支持多级分类parent_id
product 商品表 商品基础信息
product_sku 商品 SKU 表 商品规格(口味/重量/价格/库存)
cart 购物车表 用户购物车商品
orders 订单主表 订单基本信息、收货地址、金额
order_item 订单商品明细表 订单中的商品列表
address 收货地址表 用户收货地址
favorite 收藏表 用户收藏的商品
banner 轮播图表 首页轮播图配置
chat_session 客服会话表 用户与客服的聊天会话
chat_message 聊天消息表 每条聊天消息记录
quick_reply 快捷回复模板表 客服预设快捷话术
notice 系统公告表 公告标题、内容、有效期
coupon 优惠券表 优惠券配置信息
user_coupon 用户优惠券表 用户领取记录及使用状态
seckill_activity 限时抢购活动表 活动时间、名称、状态
seckill_product 抢购商品表 活动商品、抢购价、库存、限购数
seckill_order 抢购订单表 记录用户抢购记录(防重复购买)

4.2 核心表结构(简化版)

user用户表

字段 类型 说明
id BIGINT 主键,自增
username VARCHAR(50) 用户名
password VARCHAR(100) 加密密码
phone VARCHAR(20) 手机号
avatar VARCHAR(255) 头像 URL
status TINYINT 状态0-禁用 1-启用
create_time DATETIME 创建时间
update_time DATETIME 更新时间

category商品分类表

字段 类型 说明
id BIGINT 主键,自增
name VARCHAR(50) 分类名称
parent_id BIGINT 父分类 ID0 表示一级分类
level TINYINT 层级1-一级 2-二级 3-三级
sort INT 排序号
icon VARCHAR(255) 分类图标

product商品表

字段 类型 说明
id BIGINT 主键,自增
name VARCHAR(200) 商品名称
category_id BIGINT 分类 ID
main_image VARCHAR(255) 商品主图
detail TEXT 商品详情(富文本/HTML
status TINYINT 状态0-下架 1-上架
create_time DATETIME 创建时间

product_sku商品 SKU 表)

字段 类型 说明
id BIGINT 主键,自增
product_id BIGINT 商品 ID
sku_name VARCHAR(100) 规格名称(如:香辣味/500g
price DECIMAL(10,2) 售价
stock INT 库存数量

orders订单主表

字段 类型 说明
id BIGINT 主键,自增
order_no VARCHAR(32) 订单编号(唯一)
user_id BIGINT 用户 ID
total_amount DECIMAL(10,2) 订单总金额
pay_amount DECIMAL(10,2) 实付金额
status TINYINT 状态0-待付款 1-待发货 2-待收货 3-已完成 4-已取消
receiver_name VARCHAR(50) 收货人姓名
receiver_phone VARCHAR(20) 收货人电话
receiver_address VARCHAR(255) 收货地址
remark VARCHAR(500) 订单备注
pay_time DATETIME 支付时间
deliver_time DATETIME 发货时间
receive_time DATETIME 收货时间
create_time DATETIME 创建时间

chat_session客服会话表

字段 类型 说明
id BIGINT 主键,自增
session_no VARCHAR(32) 会话编号(唯一)
user_id BIGINT 发起用户 ID
admin_id BIGINT 接待客服 IDNULL 表示待分配)
status TINYINT 状态0-待处理 1-处理中 2-已解决
create_time DATETIME 会话创建时间
update_time DATETIME 最后活跃时间

chat_message聊天消息表

字段 类型 说明
id BIGINT 主键,自增
session_id BIGINT 所属会话 ID
sender_id BIGINT 发送者 ID
sender_type TINYINT 发送者类型0-用户 1-客服
type VARCHAR(10) 消息类型text / image / system
content TEXT 消息内容文字或图片URL
is_read TINYINT 是否已读0-未读 1-已读
create_time DATETIME 发送时间

notice系统公告表

字段 类型 说明
id BIGINT 主键,自增
title VARCHAR(200) 公告标题
content TEXT 公告正文(富文本)
type TINYINT 类型0-普通 1-重要 2-活动
is_top TINYINT 是否置顶0-否 1-是
status TINYINT 状态0-下线 1-上线
start_time DATETIME 生效时间
end_time DATETIME 失效时间
create_time DATETIME 创建时间

coupon优惠券表

字段 类型 说明
id BIGINT 主键,自增
name VARCHAR(100) 优惠券名称
type TINYINT 类型0-满减 1-折扣 2-无门槛
amount DECIMAL(10,2) 满减面值 / 折扣率(如 0.9 表示九折)
min_amount DECIMAL(10,2) 最低使用金额0 表示无门槛)
max_discount DECIMAL(10,2) 折扣券最高抵扣金额(满减/无门槛填0
total INT 发放总量(-1 表示不限量)
remain INT 剩余可领数量
per_limit INT 每人限领数量
status TINYINT 状态0-未上线 1-已上线 2-已结束
start_time DATETIME 领取开始时间
end_time DATETIME 领取截止时间
valid_days INT 领取后有效天数(与 valid_end_time 二选一)

user_coupon用户优惠券表

字段 类型 说明
id BIGINT 主键,自增
user_id BIGINT 用户 ID
coupon_id BIGINT 优惠券 ID
status TINYINT 状态0-未使用 1-已使用 2-已过期
order_id BIGINT 使用时关联的订单 IDNULL 表示未使用)
receive_time DATETIME 领取时间
use_time DATETIME 使用时间
expire_time DATETIME 过期时间

seckill_activity限时抢购活动表

字段 类型 说明
id BIGINT 主键,自增
name VARCHAR(100) 活动名称
start_time DATETIME 活动开始时间
end_time DATETIME 活动结束时间
status TINYINT 状态0-未开始 1-进行中 2-已结束
create_time DATETIME 创建时间

seckill_product抢购商品表

字段 类型 说明
id BIGINT 主键,自增
activity_id BIGINT 活动 ID
product_id BIGINT 商品 ID
sku_id BIGINT SKU ID
seckill_price DECIMAL(10,2) 抢购价格
seckill_stock INT 抢购总库存
remain_stock INT 剩余库存
per_limit INT 每人限购数量
技术点 应用场景 说明
JWT + 拦截器 用户认证 Token 无状态登录,用户端和管理端分别签发不同 Token区分权限
Redis 缓存 热点数据加速 缓存轮播图、商品分类、热销商品,减少数据库压力,设置合理过期时间
全局异常处理 系统健壮性 @ControllerAdvice + @ExceptionHandler 统一处理异常和返回格式
统一返回结果 接口规范 封装统一的 JSON 响应结构code / message / data
文件上传 图片管理 商品图、轮播图、头像上传,本地文件系统存储
MyBatis-Plus ORM 增强 简化 CRUD使用分页插件、条件构造器、代码生成器
跨域处理 前后端分离 SpringBoot 配置 CORS支持本地开发联调
参数校验 数据合法性 @Valid + @NotNull / @Size 等注解进行入参校验
数据可视化 后台仪表盘 ECharts 绘制销售趋势图、订单状态饼图、热销商品柱状图
订单状态机 订单流转 严格定义订单状态流转规则,防止非法状态变更
WebSocket 实时通信 客服聊天 使用 Spring WebSocket + STOMP 协议实现双向实时消息推送
Redis 在线状态 客服聊天 Redis Set 维护在线用户集合,计数器管理未读消息数
消息持久化 客服聊天 所有聊天消息写入 MySQL保障离线消息不丢失支持历史查询
Redis 原子操作防超卖 限时抢购 DECR 原子递减库存,防止高并发下超卖,结合异步队列削峰
优惠券状态机 优惠券 严格管控优惠券 未使用→已使用/已过期 的状态流转,防止重复核销
定时任务 公告/活动/优惠券 使用 @Scheduled 定时扫描,自动更新过期公告下线、活动状态、优惠券状态

六、项目目录结构

snack-mall/
├── snack-mall-api/              # SpringBoot 后端项目
│   ├── src/main/java/com/snack/
│   │   ├── SnackMallApplication.java
│   │   ├── controller/          # 控制器层(按模块分包)
│   │   │   ├── UserController.java
│   │   │   ├── ProductController.java
│   │   │   ├── OrderController.java
│   │   │   └── AdminController.java
│   │   │   └── ChatController.java      # 客服聊天控制器
│   │   ├── websocket/           # WebSocket 相关
│   │   │   ├── ChatWebSocketHandler.java
│   │   │   ├── WebSocketConfig.java
│   │   │   └── StompMessageHandler.java
│   │   ├── service/             # 业务逻辑层
│   │   │   ├── UserService.java
│   │   │   └── impl/
│   │   ├── mapper/              # 数据访问层MyBatis-Plus
│   │   ├── entity/              # 实体类(对应数据库表)
│   │   ├── dto/                 # 数据传输对象(请求/响应)
│   │   ├── vo/                  # 视图对象(返回前端的特定结构)
│   │   ├── config/              # 配置类CORS、MyBatisPlus、Redis
│   │   ├── interceptor/         # 拦截器JWT 认证)
│   │   ├── utils/               # 工具类JWT、文件上传、MD5
│   │   ├── handler/             # 全局异常处理器
│   │   └── enums/               # 枚举类(订单状态、用户状态等)
│   └── src/main/resources/
│       ├── mapper/              # XML 映射文件
│       ├── static/uploads/      # 上传文件存储目录
│       └── application.yml      # 配置文件
│
├── snack-mall-admin/            # Vue3 管理端项目
│   ├── src/
│   │   ├── views/               # 页面视图
│   │   │   ├── login/           # 登录页
│   │   │   ├── dashboard/       # 仪表盘
│   │   │   ├── user/            # 用户管理
│   │   │   ├── product/         # 商品管理
│   │   │   ├── order/           # 订单管理
│   │   │   ├── chat/            # 客服聊天管理
│   │   │   └── system/          # 系统设置
│   │   ├── components/          # 公共组件
│   │   ├── api/                 # API 接口请求(按模块)
│   │   ├── router/              # Vue Router 路由配置
│   │   ├── store/               # Pinia 状态管理
│   │   ├── utils/               # 工具函数request、token、format
│   │   └── App.vue
│   ├── package.json
│   └── vite.config.js
│
└── snack-mall-web/              # Vue3 用户端项目
    ├── src/
    │   ├── views/
    │   │   ├── home/            # 首页
    │   │   ├── category/        # 分类页
    │   │   ├── product/         # 商品详情
    │   │   ├── cart/            # 购物车
    │   │   ├── order/           # 订单相关
    │   │   ├── chat/            # 在线客服聊天
    │   │   └── user/            # 用户中心
    │   ├── components/          # 公共组件
    │   ├── api/
    │   ├── router/
    │   ├── store/
    │   └── utils/
    ├── package.json
    └── vite.config.js

七、接口设计规范

7.1 RESTful API 设计

资源 GET POST PUT DELETE
/api/products 获取商品列表
/api/products/{id} 获取商品详情
/api/cart 获取购物车 添加商品 修改数量 清空购物车
/api/cart/{id} 删除购物车商品
/api/orders 获取订单列表 创建订单
/api/orders/{id} 获取订单详情 取消订单
/api/orders/{id}/pay 支付订单
/api/orders/{id}/receive 确认收货
/api/chat/sessions 获取会话列表 创建/恢复会话
/api/chat/sessions/{id}/messages 获取历史消息
/api/chat/quick-replies 获取快捷回复列表
/api/notices 获取公告列表
/api/notices/{id} 获取公告详情
/api/coupons 获取可领取优惠券列表
/api/coupons/{id}/receive 领取优惠券
/api/user/coupons 查看我的优惠券
/api/seckill/activities 获取抢购活动列表
/api/seckill/activities/{id}/products 获取活动商品
/api/seckill/buy 发起抢购下单

7.2 WebSocket 消息格式

WebSocket 连接地址:ws://服务器地址/ws/chat?token={JWT_TOKEN}

客户端发送消息:

{
  "sessionId": 1,
  "type": "text",
  "content": "我的订单什么时候发货?"
}

服务端推送消息:

{
  "id": 100,
  "sessionId": 1,
  "senderType": 1,
  "senderName": "客服小美",
  "type": "text",
  "content": "您好,您的订单预计明天发货",
  "createTime": "2026-06-01 14:30:00"
}

7.3 统一响应格式

{
  "code": 200,
  "message": "操作成功",
  "data": {}
}

7.4 状态码定义

状态码 含义
200 成功
400 请求参数错误
401 未登录或 Token 过期
403 无权限
404 资源不存在
500 服务器内部错误
1001 业务错误(自定义)

八、毕设论文结构建议

章节 内容
第 1 章 绪论 研究背景与意义、国内外研究现状、论文主要研究内容
第 2 章 相关技术介绍 SpringBoot、Vue3、MySQL、Redis、MyBatis-Plus 等核心技术介绍
第 3 章 系统分析 可行性分析(技术/经济/操作)、需求分析(功能需求/非功能需求)、用例图
第 4 章 系统设计 系统架构设计、功能模块设计、数据库设计E-R 图、表结构)、接口设计
第 5 章 系统实现 核心功能实现(含关键代码)、界面展示截图
第 6 章 系统测试 测试环境、功能测试用例、测试结果
第 7 章 总结与展望 工作总结、不足之处、未来展望
参考文献
致谢

附录

A. 开发环境建议

工具 版本/说明
JDK 1.8 / 11 / 17
IDEA IntelliJ IDEA 2022+
VS Code / WebStorm 前端开发
MySQL 8.0
Redis 6.x / 7.x
Navicat / DBeaver 数据库可视化工具
Postman 接口测试

B. 功能优先级说明

  • :核心功能,必须实现
  • :重要功能,建议实现
  • :扩展功能,时间充裕时实现

本文档随项目迭代持续更新。