当前位置: 首页 > news >正文

基于 SpringBoot 的家用电器销售系统

项目简介

本系统是一款基于B/S(Browser/Server)架构的家用电器在线销售平台,采用前后端分离设计,实现了从商品展示、购物车管理到订单处理的完整电商业务流程。系统支持管理员与普通用户两种角色,管理员可对用户、商品分类、商品及订单进行统一管理,普通用户可浏览商品、加入购物车、下单购买并管理个人订单。适用于课程设计、毕业设计、答辩演示及学习交流。

核心功能介绍

管理员端

模块功能说明
用户管理用户信息的增删改查,支持查看用户列表与详情
分类管理商品分类的维护,支持新增、编辑、删除分类
商品管理商品信息的增删改查,库存管理,商品图片上传
订单管理订单列表查询,订单发货,订单取消

用户端

模块功能说明
用户认证用户注册、登录
商品浏览按分类筛选、按名称搜索商品,查看商品详情
购物车添加商品、修改数量、删除商品
下单购买填写收货人、电话、地址,提交订单
订单管理查看我的订单,确认收货
个人信息修改个人资料、联系方式、收货地址

技术栈介绍

后端技术

技术版本说明
Java1.8开发语言
Spring Boot2.1.8应用框架
MyBatis2.1.0ORM持久层框架
MySQL Connector8.0.17数据库驱动
Lombok-简化实体类编写
FastJSON1.2.58JSON序列化

前端技术

技术版本说明
Vue2.6.11前端框架
Vue Router3.2.0路由管理
Element UI2.15.3UI组件库
Axios0.21.1HTTP请求库

其他

技术版本说明
MySQL8.0关系型数据库
Maven3.6+项目构建工具
Node.js12.0+前端运行环境

项目结构

c84/ ├── src/main/ │ ├── java/com/appliance/ │ │ ├── controller/ # 控制器层(RESTful API) │ │ │ ├── UserController.java │ │ │ ├── ProductController.java │ │ │ ├── CategoryController.java │ │ │ ├── CartController.java │ │ │ ├── OrdersController.java │ │ │ └── FileController.java │ │ ├── service/ # 业务逻辑层 │ │ ├── mapper/ # MyBatis数据访问层 │ │ ├── entity/ # 实体类 │ │ ├── common/ # 公共类(统一响应封装等) │ │ ├── config/ # 配置类(跨域、文件上传等) │ │ └── ApplianceApplication.java │ └── resources/ │ ├── mapper/ # MyBatis XML映射文件 │ ├── sql/ # 数据库初始化脚本 │ └── application.yml # 应用配置文件 ├── frontend/ │ ├── src/ │ │ ├── views/ # 页面组件 │ │ │ ├── Login.vue # 登录页 │ │ │ ├── Register.vue # 注册页 │ │ │ ├── Home.vue # 首页 │ │ │ ├── user/ # 用户端页面 │ │ │ └── admin/ # 管理端页面 │ │ ├── router/ # 路由配置 │ │ ├── App.vue │ │ └── main.js │ ├── package.json │ └── vue.config.js └── pom.xml

数据库设计

数据库概览

数据库名:appliance_sales,字符集:utf8mb4

表结构说明

1. user(用户表)
字段类型说明
idINT主键,自增
usernameVARCHAR(50)用户名,唯一
passwordVARCHAR(100)密码
nameVARCHAR(100)姓名
phoneVARCHAR(20)手机号
addressVARCHAR(500)地址
roleTINYINT角色:0-普通用户,1-管理员
create_timeDATETIME创建时间
2. category(商品分类表)
字段类型说明
idINT主键,自增
nameVARCHAR(100)分类名称
descriptionVARCHAR(500)分类描述
3. product(商品表)
字段类型说明
idINT主键,自增
nameVARCHAR(200)商品名称
category_idINT分类ID,外键
priceDECIMAL(10,2)价格
stockINT库存
imageVARCHAR(200)图片路径
descriptionTEXT商品描述
statusTINYINT状态:0-下架,1-上架
create_timeDATETIME创建时间
4. orders(订单表)
字段类型说明
idINT主键,自增
order_noVARCHAR(50)订单号,唯一
user_idINT用户ID,外键
total_amountDECIMAL(10,2)订单总金额
statusTINYINT状态:0-待发货,1-已发货,2-已完成
receiver_nameVARCHAR(100)收货人
receiver_phoneVARCHAR(20)收货电话
receiver_addressVARCHAR(500)收货地址
create_timeDATETIME创建时间
update_timeDATETIME更新时间
5. order_item(订单明细表)
字段类型说明
idINT主键,自增
order_idINT订单ID,外键
product_idINT商品ID,外键
product_nameVARCHAR(200)商品名称快照
product_priceDECIMAL(10,2)商品单价快照
quantityINT购买数量
6. cart(购物车表)
字段类型说明
idINT主键,自增
user_idINT用户ID,外键
product_idINT商品ID,外键
quantityINT数量
create_timeDATETIME创建时间

ER关系

  • product.category_idcategory.id
  • orders.user_iduser.id
  • order_item.order_idorders.id
  • order_item.product_idproduct.id
  • cart.user_iduser.id
  • cart.product_idproduct.id

安装与运行

1. 数据库配置

执行src/main/resources/sql/appliance_sales.sql创建数据库并导入初始数据。

修改src/main/resources/application.yml中的数据库连接信息:

spring: datasource: url: jdbc:mysql://localhost:3306/appliance_sales?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: root password: 你的密码

2. 后端启动

mvn clean package mvn spring-boot:run

后端服务地址:http://localhost:8080

3. 前端启动

cd frontend npm install npm run serve

前端服务地址:http://localhost:8081

4. 生产部署

# 前端打包 cd frontend && npm run build # 后端打包 mvn clean package -DskipTests

默认账号

角色用户名密码
管理员admin123456
普通用户user123456

主要接口

用户

  • POST /api/user/login- 登录
  • POST /api/user/register- 注册
  • GET /api/user/{id}- 获取用户信息
  • POST /api/user- 保存/更新用户信息

商品

  • GET /api/product- 商品列表(支持分类、关键词筛选)
  • GET /api/product/{id}- 商品详情
  • POST /api/product- 保存商品(管理员)
  • DELETE /api/product/{id}- 删除商品(管理员)

订单

  • POST /api/orders- 创建/更新订单
  • GET /api/orders- 全部订单(管理员)
  • GET /api/orders/user/{userId}- 用户订单
  • GET /api/orders/{id}- 订单详情

购物车

  • POST /api/cart- 添加购物车
  • PUT /api/cart- 更新购物车
  • GET /api/cart/user/{userId}- 购物车列表
  • DELETE /api/cart/{id}- 删除购物车项

注意事项

  • 需预先安装并启动 MySQL 8.0
  • JDK 1.8、Maven 3.6+、Node.js 12.0+
  • 首次运行前需执行数据库脚本

http://www.jsqmd.com/news/1335746/

相关文章:

  • 如何使用Hands-On Network Programming with C快速构建第一个TCP服务器
  • Windows 10 PowerShell原生SFTP连接CentOS 7服务器文件传输指南
  • git使用整理
  • Linux进程级网络流量监控:从原理到实战,搭建长期监控体系
  • 企业级 AI Coding 知识工程架构设计实践:从“偶尔成功”到“稳定交付”
  • 差分信号设计实战:从抗干扰原理到PCB布线黄金法则
  • 乌克兰语语音技术生态:w2v-xls-r-uk与社区资源整合指南
  • Supervisor进程守护:从原理到生产环境部署的完整指南
  • 向量数据库存储工艺文档:语义搜索比关键词快10倍
  • PatchTST-FM-r1架构解密:Transformer如何重塑时间序列预测
  • 语音识别模型参数调优秘籍:Wav2Vec2-Large-XLSR-53-Lithuanian配置文件深度解读
  • 7个nMigen实用技巧:让你的硬件设计速度提升10倍
  • Bitcoin Gold钱包安全操作指南:备份、恢复与多签功能实战
  • B站资源离线收藏指南:如何用BiliTools轻松下载4K视频与弹幕
  • 异地异地相隔千里也能同步追同一部剧?SyncTV 让远程观影像坐在同一沙发
  • 2026年国内品牌咨询机构综合****选型参考 - 品牌速递
  • 技术项目命名艺术:从“拉布布”看如何降低团队认知负荷
  • 三步实现微信聊天记录安全备份的实用指南
  • MASA模组全家桶汉化包:7大模组中文界面完整解决方案
  • 图像特征提取终极方案:swin_base_patch4_window7_224.ms_in1k的Feature Map应用指南
  • UE5 UMG嵌入Web浏览器:打通游戏UI与Web生态的完整指南
  • EAGLE PCB设计实战:从原理图到Gerber的全流程效率指南
  • 从显微成像技术解析受精过程:揭秘生命启动的细胞级可视化
  • OpenClaw本地部署:Cherry Studio与Ollama Cloud轻量化方案
  • LoadingStateView核心功能详解:从加载中到无数据,一站式缺省页解决方案
  • 飞行体验优化全攻略:从值机选座到行李收纳的实用技巧
  • STM32 SPI+DMA驱动WS2812B优化:时序校准、双缓冲与稳定性实战
  • 2026年深圳翻译公司哪家强?实力和专业多维度分析精选 - 博文翻译深圳翻译公司
  • C++ 线程实战案例解析
  • Qt QCheckBox深度解析:从状态管理到信号机制与实战应用