1. 项目概述
这个全栈Web电子产品销售系统采用SpringBoot+Vue+MySQL技术栈实现,是一套开箱即用的完整解决方案。我在实际部署测试中发现,系统不仅包含了商品管理、订单处理等基础功能,还整合了库存预警、销售统计等实用模块,特别适合中小型电子产品零售商快速搭建线上销售平台。
系统最大的亮点在于前后端完全解耦的设计架构。后端采用SpringBoot 2.7提供RESTful API,前端使用Vue 3组合式API开发管理界面,MySQL 8.0作为数据存储。这种架构既保证了系统的可维护性,又便于后续功能扩展。
2. 技术架构解析
2.1 后端SpringBoot实现
后端采用分层架构设计:
- Controller层:处理HTTP请求,参数校验
- Service层:业务逻辑实现
- Repository层:数据库操作
- Model层:实体类定义
核心配置示例(application.yml):
spring: datasource: url: jdbc:mysql://localhost:3306/electronic_store username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver jpa: show-sql: true hibernate: ddl-auto: update2.2 前端Vue实现
前端采用Vue 3 + Element Plus构建管理后台,主要特点:
- 基于Vue Router实现路由权限控制
- 使用Axios封装HTTP请求
- Pinia状态管理
- ECharts可视化报表
典型API调用示例:
// 获取商品列表 const fetchProducts = async () => { try { const res = await api.get('/api/products', { params: { page: 1, size: 10 } }) productList.value = res.data.content } catch (err) { ElMessage.error('获取商品列表失败') } }3. 数据库设计
3.1 核心表结构
CREATE TABLE `product` ( `id` bigint NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `category_id` bigint NOT NULL, `price` decimal(10,2) NOT NULL, `stock` int NOT NULL DEFAULT '0', `description` text, `create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;3.2 关键业务表关系
- 商品表(product) ↔ 分类表(category):多对一
- 订单表(order) ↔ 订单明细(order_item):一对多
- 用户表(user) ↔ 订单表(order):一对多
4. 系统功能实现
4.1 商品管理模块
- 商品CRUD操作
- 多条件组合查询
- 批量导入/导出
- 库存预警功能
核心业务逻辑:
@Service public class ProductServiceImpl implements ProductService { @Override public Page<Product> searchProducts(String keyword, Long categoryId, Double minPrice, Double maxPrice, Pageable pageable) { Specification<Product> spec = (root, query, cb) -> { List<Predicate> predicates = new ArrayList<>(); if (StringUtils.hasText(keyword)) { predicates.add(cb.like(root.get("name"), "%" + keyword + "%")); } // 其他条件处理... return cb.and(predicates.toArray(new Predicate[0])); }; return productRepository.findAll(spec, pageable); } }4.2 订单处理流程
- 购物车结算生成订单
- 订单状态机设计(待支付→已支付→已发货→已完成)
- 库存扣减逻辑
- 订单取消处理
5. 部署与运行
5.1 环境准备
- JDK 11+
- Node.js 16+
- MySQL 8.0+
- Maven 3.6+
5.2 后端启动步骤
- 导入Maven依赖
- 配置数据库连接
- 启动SpringBoot应用
mvn spring-boot:run5.3 前端启动步骤
- 安装依赖
npm install- 开发模式运行
npm run dev- 生产构建
npm run build6. 常见问题解决
6.1 跨域问题处理
后端配置CORS:
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .maxAge(3600); } }6.2 文件上传大小限制
调整SpringBoot配置:
spring: servlet: multipart: max-file-size: 10MB max-request-size: 10MB6.3 生产环境安全建议
- 禁用JPA的ddl-auto
- 配置数据库连接池
- 启用HTTPS
- 实现API权限控制
7. 扩展开发建议
7.1 功能扩展方向
- 会员积分系统
- 优惠券模块
- 第三方支付对接
- 物流跟踪接口
7.2 性能优化方案
- Redis缓存热点数据
- 商品搜索改用Elasticsearch
- 分库分表设计
- 前端组件懒加载
这套系统在实际使用中表现稳定,特别是前后端分离的设计让二次开发变得非常便捷。我在部署过程中发现,将Vue前端部署到Nginx,SpringBoot后端使用Docker容器化,可以显著提升系统的可维护性和扩展性。对于需要快速搭建电子产品销售平台的团队,这个项目确实是个不错的起点。