毕业设计实战:基于SpringBoot+Vue+MySQL的太原学院商铺管理系统设计与实现指南

17 阅读10分钟

毕业设计实战:基于SpringBoot+Vue+MySQL的太原学院商铺管理系统设计与实现指南

在开发“基于SpringBoot+Vue+MySQL的太原学院商铺管理系统”毕业设计时,曾因“商品订单表未通过商品ID与用户ID双外键关联”踩过关键坑——初期仅单独设计订单表的编号字段,未与商品信息表、用户表建立关联约束,导致统计某商品的订单量或某用户的历史订单时需手动匹配数据,耗费1.5天重构表结构、补全关联SQL才解决问题📝。基于此次实战经验,本文精简拆解核心开发流程,附避坑要点与实操细节,为同类毕设提供可落地的实施参考。

一、需求分析:聚焦校园商铺核心,拒绝功能冗余

部分同学易陷入“功能堆砌”误区,比如笔者曾耗时1.2天开发“商铺数据可视化大屏”,最终因偏离“商品管理、订单处理、商家管控、用户服务”核心需求被导师要求删减。明确“角色-功能”对应关系,是降低返工率的关键。

1. 核心角色与功能(精简版)

角色核心功能
管理员商品管理(审核商品信息、上下架操作、维护库存)、商家管理(审核商家资质、管控账户状态、查看余额)、订单管理(处理订单异常、跟踪物流)、公告管理(发布校园商铺通知、活动预告)、用户管理(管控账户状态、处理投诉)
商家商品维护(新增/修改商品信息、上传商品图片、设置价格)、订单处理(接收订单、发货、处理退款)、账户管理(查看余额、申请提现)、查看商品评价与反馈
普通用户商品浏览(按类型/商家筛选)、购物车管理(添加/删除商品、修改数量)、订单操作(提交订单、支付、查看物流)、商品收藏与评价、收货地址管理、查看公告

2. 需求避坑要点

  • 拒绝空想调研:邀请8-10名同学模拟“商家入驻审核-商品上架-用户下单-订单处理”全流程,基于“用户需确认商品真实性、商家需保障服务合规性”需求,增设“商家营业执照公示”模块(关联店铺位置、信用等级)、“商品详情标注”模块(注明库存数量、发货时效),实用性远大于冗余的“可视化大屏”;
  • 明确约束条件:提前规定“商品图片/商家资质仅限JPG/PNG(≤4MB)”“订单编号自动生成(格式:SP+年份+序号,如SP2024001)”“商品名称≥2字”“商家申请需提交完整营业执照”“订单支付后30分钟内未付款自动取消”“评价内容≥5字”,为编码提供明确依据。

二、技术选型:优先稳定适配,新手易上手

前期曾跟风选用SpringBoot 3.0+Vue 3+Redis技术栈,因Redis缓存配置不当导致商品库存数据重启后错乱,调试耗时1.1天。最终确定“稳定型”技术组合,兼顾开发效率与兼容性:

技术工具选型理由避坑提醒
SpringBoot框架简化配置,支持自动装配,高效实现商品、订单、商家等模块开发,降低代码耦合度配置application.yml时需确保数据库连接参数正确,避免商品数据查询为空;事务管理需覆盖订单流程(如下单成功同步减少商品库存)
Vue 2.x+ElementUI轻量易上手,组件化开发,快速实现商品列表、订单表单、商家审核页等页面,适配校园系统用户操作习惯避免Vue 3.x版本,ElementUI兼容不足,易出现购物车数量校验错误;配置axios拦截器处理登录状态,防止用户未登录提交订单
MySQL 5.7支持事务与外键,满足多表关联(商品-订单-用户、商家-商品),utf8mb4解决商品名称/评价含生僻字乱码问题安装时手动设编码为utf8mb4,避免商品介绍含特殊符号乱码;开启事务确保商品下架与用户订单同步(如商品下架自动取消未发货订单)
Eclipse 2022集成SpringBoot开发环境,支持代码提示与调试,内置数据库连接工具,减少开发工具切换耗时配置Tomcat时端口设为8088,避免与校园其他系统8080/8081端口冲突;安装MyBatis插件,确保XML映射文件语法正确

三、数据库设计:精简关联,避免数据混乱

数据库是系统核心,前期因未关联“商品收藏表”与“商品信息表”,导致无法追溯用户收藏的商品详情,后续用“实体-属性-关系”分析法梳理,效率显著提升。

1. 核心表结构(精简版,共11张表)

  • 管理员表(admin):id(主键)、username(账号,唯一)、password(MD5加密)、role(角色)、addtime(新增时间);
  • 用户表(yonghu):id(主键)、yonghu_name(用户姓名)、yonghu_phone(手机号,唯一)、yonghu_id_number(身份证号)、yonghu_photo(头像路径)、yonghu_email(邮箱)、new_money(余额)、jinyong_types(账户状态)、create_time(创建时间);
  • 商家表(shangjia):id(主键)、shangjia_name(商家名称,唯一)、shangjia_phone(联系方式)、shangjia_email(邮箱)、shangjia_photo(营业执照路径)、shangjia_address(店铺位置)、quyu_types(区域)、shangjia_xingji_types(信用类型)、new_money(现有余额)、shangjia_content(商家介绍)、jinyong_types(账户状态)、shangjia_yesno_types(申请状态);
  • 商品表(shangpin):id(主键)、shangjia_id(商家ID,外键)、shangpin_name(商品名称)、shangpin_uuid_number(商品编号,唯一)、shangpin_photo(商品照片路径)、shangpin_types(商品类型)、shangpin_kucun_number(商品库存)、shangpin_old_money(原价)、shangpin_new_money(现价)、shangpin_content(商品介绍)、shangxia_types(是否上架);
  • 商品订单表(shangpin_order):id(主键)、shangpin_order_uuid_number(订单编号,唯一)、address_id(收货地址ID,外键)、shangpin_id(商品ID,外键)、yonghu_id(用户ID,外键)、buy_number(购买数量)、shangpin_order_true_price(实付价格)、shangpin_order_courier_name(快递公司)、shangpin_order_courier_number(快递单号)、shangpin_order_types(订单类型)、insert_time(订单创建时间);
  • 购物车表(gouwuche):id(主键)、yonghu_id(用户ID,外键)、shangpin_id(商品ID,外键)、buy_number(购买数量)、create_time(添加时间)、update_time(更新时间);
  • 商品收藏表(shangpin_collection):id(主键)、shangpin_id(商品ID,外键)、yonghu_id(用户ID,外键)、shangpin_collection_types(类型)、insert_time(收藏时间);
  • 商品评价表(shangpin_pingjia):id(主键)、shangpin_id(商品ID,外键)、yonghu_id(用户ID,外键)、shangpin_commentback_text(评价内容)、insert_time(评价时间)、reply_text(回复内容)、update_time(回复时间);
  • 收货地址表(address):id(主键)、yonghu_id(用户ID,外键)、address_name(收货人)、address_phone(电话)、address_dizhi(地址)、isdefault_types(是否默认地址)、insert_time(添加时间);
  • 公告表(gonggao):id(主键)、gonggao_name(公告标题)、gonggao_photo(公告图片路径)、gonggao_types(公告类型)、gonggao_content(公告详情)、insert_time(发布时间);
  • 字典表(dictionary):id(主键)、dic_code(字段)、dic_name(字段名)、code_index(编码)、index_name(编码名字),统一商品类型、公告类型、商家信用类型等数据。

2. 核心关联测试

建表后立即验证关联逻辑,示例SQL(查询某用户的订单及关联商品、商家信息):

SELECT so.shangpin_order_uuid_number, so.buy_number, so.shangpin_order_true_price, so.shangpin_order_types,
       sp.shangpin_name, sp.shangpin_new_money, sp.shangpin_kucun_number,
       sj.shangjia_name, sj.shangjia_address, sj.shangjia_xingji_types
FROM shangpin_order so
JOIN shangpin sp ON so.shangpin_id = sp.id
JOIN shangjia sj ON sp.shangjia_id = sj.id
WHERE so.yonghu_id = 1;

若能查询出“订单信息(编号、数量、实付价格、状态)+商品信息(名称、现价、库存)+商家信息(名称、地址、信用等级)”,说明关联正确;若报错,检查字段类型是否匹配(如shangpin_id与商品表id是否同为Integer)。

关键避坑:切勿将商品视频、商家高清资质图存入数据库!前期尝试导致数据库体积骤增(15个商家资质图+5个商品视频占1.8GB),改为存储文件路径(如/static/shangjia/photo1.jpg),查询速度提升45%。

四、核心功能实现:3大模块满足答辩需求

无需开发所有功能,优先完成以下3个核心模块,突出开发重点:

1. 管理员端:商家与商品审核管理(必做)

  • 核心逻辑:管理员审核商家入驻申请(校验营业执照真实性、填写审核意见),审核通过后商家账户激活;审核商品信息(校验商品描述与图片一致性、设置商品是否上架);处理订单异常(如用户投诉缺货,协调商家退款或补货);
  • 页面设计:用ElementUI表格展示商家/商品列表,操作列设“审核/修改/禁用”;商家列表标红“待审核”商家,商品列表标红“库存不足(≤5件)”商品,支持按区域/类型筛选。

2. 用户端:商品购物与订单跟踪(核心)

  • 核心逻辑:用户按商品类型(如零食、文具、日用品)或商家筛选商品,查看详情(含价格、库存、商家信用);添加商品到购物车,修改购买数量(提交前校验库存,不足则提示“库存不足,当前剩余X件”);提交订单时选择收货地址,支付后生成订单编号,可在“我的订单”查看物流状态;
  • 页面设计:商品列表用图文卡片展示(含名称、缩略图、现价、销量);购物车页面支持“全选/取消”“批量删除”,结算按钮标红提示;订单详情页按“下单→支付→发货→收货”流程展示进度,物流信息实时更新。

3. 商家端:商品维护与订单处理(答辩亮点)

  • 核心逻辑:商家新增商品(填写名称、价格、库存,上传3-5张商品图),修改商品信息(支持批量更新价格);接收新订单后,填写快递单号完成发货;查看商品评价,回复用户反馈;查看账户余额,申请提现(管理员审核后到账);
  • 页面设计:商品管理页支持“批量上下架”,订单管理页按“待发货→已发货→已完成”分类展示,待处理订单标黄提示;提现页面显示历史提现记录与审核状态,评价回复框支持富文本编辑。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、测试与答辩:精简准备,高效通过

1. 核心测试用例

测试场景操作步骤预期结果
用户下单超过商品库存商品库存10件,用户在购物车填写15件并提交订单提示“库存不足,当前剩余10件,请减少购买数量”
管理员驳回商家入驻申请商家提交无效营业执照,管理员点击“驳回”并填写理由“营业执照模糊”商家端显示“入驻申请已驳回,理由:营业执照模糊”,账户状态为“未激活”

2. 答辩准备技巧

  • 演示流程:按“商家提交入驻申请→管理员审核商家与商品→用户浏览商品下单→商家发货→用户确认收货评价”演示,重点展示“订单表与商品/用户表关联逻辑”“商家资质审核流程”;
  • 突出问题解决:讲清“双外键关联修复”“文件路径存储优化”“库存并发控制”等踩坑经历,比单纯讲技术栈更有说服力;提前预判“如何保障校园商铺交易安全”,回答“商家资质多重审核、订单支付加密、用户投诉快速响应”。

结语

本文核心是“聚焦太原学院商铺管理核心业务、优先稳定技术、提前排查表关联问题”。毕设无需复杂功能,把商家审核、商品购物、订单处理做扎实,即可顺利通过答辩。

若需核心源码(带注释)、数据库脚本,可在评论区留言“SpringBoot学院商铺系统”获取;开发中遇问题(如订单关联逻辑、商家提现审核),也可留言咨询~ 祝毕设顺利!🎉