毕业设计实战:基于SpringBoot+Vue+MySQL的太原学院商铺管理系统设计与实现指南
在开发“基于SpringBoot+Vue+MySQL的太原学院商铺管理系统”毕业设计时,曾因“商品订单表未通过商品ID与用户ID双外键关联”踩过关键坑——初期仅单独设计订单表的编号字段,未与商品表、用户表建立关联约束,导致统计某用户的订单记录或某商品的销售数据时需手动匹配数据,耗费1.3天重构表结构、补全关联SQL才解决问题📝。基于此次实战经验,本文精简拆解核心开发流程,附避坑要点与实操细节,为同类毕设提供可落地的实施参考。
一、需求分析:聚焦商铺管理核心,避免功能冗余
部分同学易陷入“功能堆砌”误区,比如笔者曾耗时1.5天开发“商铺销售数据可视化大屏”,最终因偏离“商品管理、订单处理、商家审核、用户购物”核心需求被导师要求删减。明确“角色-功能”对应关系,是降低返工率的关键。
1. 核心角色与功能(精简版)
| 角色 | 核心功能 |
|---|---|
| 管理员 | 商品管理(审核上架/下架)、商家资质审核(营业执照校验、信用评级)、公告发布(活动通知/规则更新)、用户管理(账号状态管控)、订单异常处理 |
| 商家 | 商品发布(填写库存/价格/详情、上传商品图)、订单处理(接单/发货/退款)、店铺信息维护(位置/联系方式更新)、销售数据查看 |
| 学生(用户) | 商品查询(按类别/价格筛选)、购物车操作(添加/修改数量/删除)、订单提交(选择收货地址/支付方式)、商品评价/收藏、收货地址管理 |
2. 需求避坑要点
- 拒绝空想调研:邀请6-8名同学模拟“商家提交商品-管理员审核-用户下单-商家发货”流程,基于“学生需确认商品真实性与商家资质”需求,增设“商家资质公示”模块(关联营业执照照片、信用等级),实用性远大于冗余的“可视化大屏”;
- 明确约束条件:提前规定“商品照片/营业执照仅限JPG/PNG(≤5MB)”“订单编号自动生成(格式:DD+年份+序号,如DD2024001)”“商品价格≥0.1元”“商品名称≥2字”“公告内容≥20字”“收货地址需含详细楼栋号”,为编码提供明确依据。
二、技术选型:优先稳定适配,新手易上手
前期曾跟风选用SpringBoot 3+Vue 3+Redis技术栈,因Redis缓存配置不当导致商品库存数据重启后错乱,调试耗时1.2天。最终确定“稳定型”技术组合,兼顾开发效率与兼容性:
| 技术工具 | 选型理由 | 避坑提醒 |
|---|---|---|
| SpringBoot 2.7 | 简化Spring配置,支持自动装配,内置事务管理,高效实现商品审核、订单提交等模块 | 配置application.yml时需加“useSSL=false”,避免MySQL连接失败;事务需覆盖订单流程(如下单成功同步扣减商品库存) |
| Vue 2.x | 轻量易上手,组件化开发,搭配ElementUI快速实现商品列表、订单表单等页面 | 避免Vue 3.x版本,ElementUI兼容不足,易出现购物车数量校验错误;配置axios拦截器处理token过期,防止用户下单中断 |
| MySQL 5.7 | 支持事务与外键,满足多表关联(商品-订单-用户-商家),utf8mb4解决生僻字乱码 | 安装时手动设编码为utf8mb4,避免商品详情含特殊符号乱码;开启事务确保商品下架与购物车数据同步(如商品下架自动移除用户购物车中该商品) |
| Tomcat 8.5 | 适配SpringBoot与Vue项目,支持热部署,减少代码修改后重启耗时 | 端口设为8084,避免与默认8080/8081/8083端口冲突;部署时检查war包完整性,防止商品详情页缺失 |
三、数据库设计:精简关联,避免数据混乱
数据库是系统核心,前期因未关联“商品收藏表”与“用户表”,导致无法追溯某用户的收藏记录,后续用“实体-属性-关系”分析法梳理,效率显著提升。
1. 核心表结构(精简版,共11张表)
- 管理员表(admin):id(主键)、username(账号,唯一)、password(MD5加密)、role(角色)、addtime(新增时间);
- 用户表(yonghu):id(主键)、yonghu_name(姓名)、yonghu_phone(手机号,唯一)、yonghu_id_number(身份证号)、yonghu_photo(头像路径)、new_money(余额)、jinyong_types(账户状态);
- 商家表(shangjia):id(主键)、shangjia_name(商家名称,唯一)、shangjia_phone(联系方式)、shangjia_photo(营业执照路径)、shangjia_address(店铺位置)、shangjia_xingji_types(信用等级)、shangjia_yesno_types(审核状态);
- 商品表(shangpin):id(主键)、shangjia_id(商家ID,外键)、shangpin_name(商品名称)、shangpin_photo(商品照片路径)、shangpin_kucun_number(库存)、shangpin_new_money(现价)、shangxia_types(是否上架);
- 购物车表(gouwuche):id(主键)、yonghu_id(用户ID,外键)、shangpin_id(商品ID,外键)、buy_number(购买数量)、create_time(添加时间);
- 商品订单表(shangpin_order):id(主键)、yonghu_id(用户ID,外键)、shangpin_id(商品ID,外键)、address_id(收货地址ID,外键)、shangpin_order_uuid_number(订单编号)、buy_number(购买数量)、shangpin_order_true_price(实付价格)、shangpin_order_types(订单状态);
- 收货地址表(address):id(主键)、yonghu_id(用户ID,外键)、address_name(收货人)、address_phone(电话)、address_dizhi(详细地址)、isdefault_types(是否默认地址);
- 商品收藏表(shangpin_collection):id(主键)、yonghu_id(用户ID,外键)、shangpin_id(商品ID,外键)、insert_time(收藏时间);
- 商品评价表(shangpin_commentback):id(主键)、yonghu_id(用户ID,外键)、shangpin_id(商品ID,外键)、shangpin_commentback_text(评价内容)、insert_time(评价时间);
- 公告表(gonggao):id(主键)、gonggao_name(公告标题)、gonggao_photo(公告图片路径)、gonggao_content(详情)、insert_time(发布时间);
- 字典表(dictionary):id(主键)、dic_code(字段)、index_name(编码名称),统一商品类型、订单状态、信用等级等数据。
2. 核心关联测试
建表后立即验证关联逻辑,示例SQL(查询某用户的订单及关联商品、商家信息):
SELECT o.shangpin_order_uuid_number, o.buy_number, o.shangpin_order_true_price, o.shangpin_order_types,
s.shangpin_name, s.shangpin_photo, s.shangpin_new_money,
sj.shangjia_name, sj.shangjia_phone, sj.shangjia_xingji_types,
a.address_name, a.address_phone, a.address_dizhi
FROM shangpin_order o
JOIN shangpin s ON o.shangpin_id = s.id
JOIN shangjia sj ON s.shangjia_id = sj.id
JOIN address a ON o.address_id = a.id
WHERE o.yonghu_id = 3;
若能查询出“订单信息(编号、数量、实付、状态)+商品信息(名称、图片、价格)+商家信息(名称、电话、信用)+地址信息(收货人、电话、地址)”,说明关联正确;若报错,检查字段类型是否匹配(如shangpin_id与商品表id是否同为Integer)。
关键避坑:切勿将商品照片、营业执照存入数据库!前期尝试导致数据库体积骤增(20个商家资质占100MB),改为存储文件路径(如/static/shangjia/photo1.jpg),查询速度提升42%。
四、核心功能实现:3大模块满足答辩需求
无需开发所有功能,优先完成以下3个核心模块,突出开发重点:
1. 管理员端:商品审核与商家管理(必做)
- 核心逻辑:管理员查看商家提交的商品(校验库存、价格、详情完整性),通过则标记“已上架”,驳回需填写理由(如“商品详情不完整”);审核商家资质(查看营业执照、确认店铺位置真实性),通过则激活商家账号;
- 页面设计:用ElementUI表格展示待审核商品/商家列表,操作列设“审核通过/驳回”;审核页设“驳回理由”输入框,提交后实时更新商品/商家状态。
2. 用户端:商品购物与订单管理(核心)
- 核心逻辑:用户浏览商品列表(按类别筛选、按价格排序),点击商品进入详情页(查看库存、商家信息),添加商品到购物车(支持修改数量);提交订单时选择收货地址与支付方式,生成订单后扣减商品库存;在“我的订单”查看进度(待付款/待发货/待收货);
- 页面设计:商品列表用卡片式展示(含名称、现价、缩略图、库存);购物车页标红“库存不足”商品;订单提交页默认选中“默认收货地址”,提交后弹出“订单创建成功”提示。
3. 商家端:商品发布与订单处理(答辩亮点)
- 核心逻辑:商家填写商品信息(名称、库存、价格、详情),上传商品照片,提交后等待管理员审核;审核通过后在“我的商品”管理上下架状态;接收用户订单后,点击“发货”填写快递单号,同步更新订单状态;
- 页面设计:商品发布表单标红必填项(名称、价格、库存);订单列表按“创建时间倒序”排列,操作列设“接单/发货/退款”,发货后实时显示快递单号。
五、测试与答辩:精简准备,高效通过
1. 核心测试用例
| 测试场景 | 操作步骤 | 预期结果 |
|---|---|---|
| 用户购买库存为1的商品 | 两个用户同时下单购买同一件库存为1的商品 | 仅1个用户下单成功,另1个提示“库存不足” |
| 管理员驳回商家资质申请 | 商家提交模糊的营业执照照片,管理员点击“驳回”并填写理由 | 商家账号保持“待审核”,收到“资质模糊,驳回申请”通知 |
2. 答辩准备技巧
- 演示流程:按“商家提交商品→管理员审核→用户下单→商家发货”演示,重点展示“订单表与商品/用户/地址表关联逻辑”“商品审核与上架同步”;
- 突出问题解决:讲清“双外键关联修复”“文件路径存储优化”“库存并发控制”等踩坑经历,比单纯讲技术栈更有说服力;提前预判“如何保障交易安全”,回答“密码MD5加密、订单信息防篡改、商家资质审核、库存实时同步”。
结语
本文核心是“聚焦太原学院商铺管理核心业务、优先稳定技术、提前排查表关联问题”。毕设无需复杂功能,把商品管理、订单处理、商家审核做扎实,即可顺利通过答辩。
若需核心源码(带注释)、数据库脚本,可在评论区留言“SpringBoot学院商铺系统”获取;开发中遇问题(如订单关联逻辑、库存并发控制),也可留言咨询~ 祝毕设顺利!🎉