news 2026/7/9 17:24:32

智慧商城(Smart Mall):基于 Spring Boot + Vue 3 的现代化电商平台实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
智慧商城(Smart Mall):基于 Spring Boot + Vue 3 的现代化电商平台实战

项目简介

智慧商城(Smart Mall)是一个基于Spring Boot 3.2 + Vue 3 + Redis + MySQL + Nginx构建的现代化电商平台。该项目采用前后端分离架构,完整实现了用户购物、商品管理、订单处理等核心电商功能,是学习企业级 Java 全栈开发的优秀参考案例。

技术栈详解

后端技术栈

技术版本职责
Spring Boot3.2.x应用框架
MySQL8.0+关系型数据库
Redis7.0+缓存服务
MyBatis Plus3.5.xORM框架
Spring Security6.x安全框架
JWT0.12.x身份认证
Maven3.x构建工具

前端技术栈

技术版本职责
Vue3.4.x前端框架
Vite5.x构建工具
Ant Design Vue4.2.xUI组件库
Pinia3.x状态管理
Vue Router4.x路由管理
Axios1.xHTTP客户端
Tailwind CSS3.xCSS框架
TypeScript5.4类型安全

核心功能模块

用户端功能

  1. 用户认证- 注册/登录,基于 JWT 的无状态认证机制
  2. 商品浏览- 分类筛选、关键词搜索、分页展示
  3. 购物车管理- 添加商品、修改数量、删除商品
  4. 订单管理- 创建订单、查看订单列表、订单详情
  5. 地址管理- 收货地址增删改查
  6. 个人中心- 用户信息查看与修改

管理端功能

  1. 商品管理- 商品的增删改查
  2. 订单管理- 订单状态更新(待付款、已付款、已发货、已完成)
  3. 数据仪表盘- 销售数据可视化展示

架构设计

项目结构

SmartMall/ ├── backend/ # 后端代码 │ ├── src/main/java/com/example/smartmall/ │ │ ├── controller/ # REST API控制器层 │ │ ├── service/ # 业务逻辑层 │ │ │ └── impl/ # 服务实现类 │ │ ├── mapper/ # 数据访问层 │ │ ├── entity/ # 数据库实体 │ │ ├── dto/ # 数据传输对象 │ │ ├── config/ # 配置类 │ │ ├── filter/ # 过滤器 │ │ └── utils/ # 工具类 │ └── src/main/resources/ │ ├── application.yml # 应用配置 │ ├── schema.sql # 数据库初始化脚本 │ └── data.sql # 初始数据 │ ├── frontend/ # 前端代码 │ ├── src/ │ │ ├── components/ # 公共组件 │ │ ├── pages/ # 页面组件 │ │ │ └── admin/ # 管理员页面 │ │ ├── stores/ # Pinia状态管理 │ │ ├── api/ # API请求封装 │ │ ├── types/ # TypeScript类型定义 │ │ └── router/ # 路由配置 │ └── dist/ # 构建产物 │ ├── nginx/ # Nginx配置 └── docker-compose.yml # Docker编排

关键设计亮点

1. JWT 认证机制

后端通过自定义JwtAuthenticationFilter实现 Token 验证:

// SecurityConfig.java@BeanpublicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{http.csrf(AbstractHttpConfigurer::disable).sessionManagement(session->session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)).authorizeHttpRequests(auth->auth.requestMatchers("/**").permitAll()).addFilterBefore(jwtAuthenticationFilter,UsernamePasswordAuthenticationFilter.class);returnhttp.build();}

前端通过 Axios 拦截器自动携带 Token:

// api/index.tsapi.interceptors.request.use((config)=>{consttoken=localStorage.getItem('token')if(token){config.headers.Authorization=`Bearer${token}`}returnconfig})
2. 购物车服务实现

购物车服务采用数据库存储方案,支持同商品数量累加:

// CartServiceImpl.javapublicCartItemaddToCart(LonguserId,CartItemRequestrequest){CartItemexistingItem=cartItemMapper.selectOne(newLambdaQueryWrapper<CartItem>().eq(CartItem::getUserId,userId).eq(CartItem::getProductId,request.getProductId()));if(existingItem!=null){existingItem.setQuantity(existingItem.getQuantity()+request.getQuantity());cartItemMapper.updateById(existingItem);returnexistingItem;}// 创建新购物车项...}
3. 订单创建事务处理

订单创建涉及多表操作,使用@Transactional保证数据一致性:

// OrderServiceImpl.java@TransactionalpublicOrdercreateOrder(LonguserId,CreateOrderRequestrequest){// 1. 验证购物车不为空// 2. 验证收货地址// 3. 生成订单号// 4. 计算总价并扣减库存// 5. 创建订单和订单明细// 6. 清空购物车}
4. Docker 容器化部署

项目提供完整的docker-compose.yml,一键启动所有服务:

services:mysql:# 数据库redis:# 缓存backend:# 后端服务nginx:# 反向代理

核心代码解读

后端控制器示例

[ProductController.java]展示了标准的 REST API 设计:

@RestController@RequestMapping("/api/products")@RequiredArgsConstructorpublicclassProductController{privatefinalProductServiceproductService;@GetMappingpublicResponse<Page<Product>>getProducts(@RequestParam(required=false)LongcategoryId,@RequestParam(required=false)Stringkeyword,@RequestParam(defaultValue="1")Integerpage,@RequestParam(defaultValue="10")Integersize){Page<Product>products=productService.getProducts(categoryId,keyword,page,size);returnResponse.success(products);}}

前端状态管理

[user.ts]使用 Pinia 管理用户状态:

exportconstuseUserStore=defineStore('user',()=>{constuser=ref<User|null>(null)consttoken=ref(localStorage.getItem('token')||'')constlogin=async(username:string,password:string)=>{constresponse=awaitapiPost<{token:string}>('/auth/login',{username,password})token.value=response.data.token localStorage.setItem('token',token.value)awaitfetchUser()}return{user,token,login,logout,isAdmin}})

前端页面示例

[HomePage.vue]展示了商品分类和热门商品展示:

<script setup lang="ts"> import { ref, onMounted } from 'vue' import api from '@/api' import type { Product, Category } from '@/types' import Carousel from '@/components/Carousel.vue' import ProductCard from '@/components/ProductCard.vue' const products = ref<Product[]>([]) const categories = ref<Category[]>([]) onMounted(async () => { const productResponse = await api.get('/products', { params: { page: 1, size: 8 } }) products.value = productResponse.data.records const categoryResponse = await api.get('/categories') categories.value = categoryResponse.data }) </script>

快速开始

环境要求

  • JDK 21+
  • Node.js 20+
  • MySQL 8.0+
  • Redis 7.0+

启动步骤

1. 数据库配置

CREATEDATABASEsmart_mallCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;

2. 启动后端服务

cdbackend mvn spring-boot:run# 服务启动在 http://localhost:8080

3. 启动前端服务

cdfrontendnpminstallnpmrun dev# 服务启动在 http://localhost:5173

4. Docker 一键部署

docker-composeup-d

默认账号

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

API 接口一览

模块接口方法描述
认证/api/auth/loginPOST用户登录
认证/api/auth/registerPOST用户注册
用户/api/users/meGET获取当前用户
商品/api/productsGET获取商品列表
商品/api/products/:idGET获取商品详情
购物车/api/cartGET获取购物车
购物车/api/cartPOST添加商品
订单/api/ordersGET获取订单列表
订单/api/ordersPOST创建订单
管理员/api/admin/productsPOST创建商品
管理员/api/admin/orders/:id/statusPUT更新订单状态

技术亮点总结

  1. 无状态认证- 基于 JWT 的 Token 认证,服务端无需维护会话状态
  2. 事务一致性- 订单创建使用@Transactional保证数据完整性
  3. 类型安全- 前端使用 TypeScript,后端使用强类型语言
  4. 组件化开发- Vue 3 Composition API + 组件复用
  5. 容器化部署- Docker Compose 一键部署所有服务
  6. RESTful 设计- 标准的 REST API 接口规范

总结

智慧商城项目展示了一个完整的现代化电商平台开发流程,涵盖了从需求分析、架构设计到代码实现的全过程。无论是学习 Spring Boot 后端开发,还是 Vue 3 前端开发,这个项目都是一个很好的实践案例。

项目代码结构清晰,遵循了业界最佳实践,可以作为企业级电商系统开发的参考模板。如果您对某个模块有更深的兴趣,欢迎深入研究源码进行学习!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 17:24:27

Vim插件管理进阶指南:VAM实战配置与深度解析

Vim插件管理进阶指南&#xff1a;VAM实战配置与深度解析 【免费下载链接】vim-addon-manager manage and install vim plugins (including their dependencies) in a sane way. If you have any trouble contact me. Usually I reply within 24 hours 项目地址: https://gitc…

作者头像 李华
网站建设 2026/7/9 17:19:12

OpenMetadata:构建可信数据上下文与AI语义平台的完整指南

OpenMetadata&#xff1a;构建可信数据上下文与AI语义平台的完整指南 【免费下载链接】OpenMetadata The Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and…

作者头像 李华
网站建设 2026/7/9 17:18:02

基于TPS61170与PIC18F的智能DC-DC升压转换器设计

1. 项目背景与核心器件选型在工业控制、医疗设备和实验室仪器等领域&#xff0c;经常需要将较低的直流电压&#xff08;如5V或12V&#xff09;升压至更高电压&#xff08;如24V或36V&#xff09;为特定负载供电。传统方案采用分立元件搭建升压电路&#xff0c;但存在效率低、体…

作者头像 李华
网站建设 2026/7/9 17:16:19

一件衣服从进厂到出厂的完整流程解析

在服装制造业数字化转型的浪潮中&#xff0c;AI质检技术正成为提升生产效率、保证产品质量的关键环节。传统的人工质检方式存在效率低、标准不一、易疲劳等问题&#xff0c;而AI质检通过计算机视觉、机器学习等技术&#xff0c;能够实现自动化、标准化、高效率的质量检测。 那…

作者头像 李华
网站建设 2026/7/9 17:15:28

分布式追踪采样策略:Head-based 与 Tail-based 精度成本平衡

分布式追踪采样策略&#xff1a;Head-based 与 Tail-based 精度成本平衡 一、为什么 1% 采样率下找不到慢请求的根因 分布式追踪的经典困境&#xff1a;高流量系统全量采样成本太高&#xff08;存储 传输&#xff09;&#xff0c;但低采样率下 P99 延迟的异常请求大概率被丢…

作者头像 李华