温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着人们生活水平的不断提高,宠物已经成为许多家庭的重要成员。宠物用品的消费需求日益增长,传统的线下门店受限于地域和时间,难以满足用户随时随地的购物需求。因此,开发一个基于 Spring Boot + Vue3 的宠物用品线上商城平台,具有重要的现实意义。
本项目旨在构建一个功能完善、用户体验良好的宠物用品电商平台,涵盖商品浏览、购物车、订单管理、用户管理、支付对接等核心业务模块,为宠物主提供便捷、高效的在线购物服务。
2. 技术选型与架构设计
2.1 技术栈
- 后端:Spring Boot 2.x / 3.x、MyBatis-Plus、Spring Security + JWT、Redis、MySQL
- 前端:Vue3、Vite、Vue Router、Pinia、Element Plus、Axios
- 其他:Maven、Docker、Nginx、支付宝/微信支付 SDK
2.2 系统架构
系统采用前后端分离架构,前端通过 RESTful API 与后端交互。后端按业务模块分层,包括 Controller、Service、Mapper 三层架构,并使用 JWT 实现无状态认证。
flowchart TD A[Vue3 前端] -->|HTTP/JSON| B[Nginx 反向代理] B --> C[Spring Boot 后端] C --> D[(MySQL 数据库)] C --> E[(Redis 缓存)] C --> F[第三方支付接口]3. 功能模块设计
3.1 用户模块
- 用户注册、登录、退出
- 个人信息管理(头像、昵称、收货地址)
- JWT 身份认证与权限控制
3.2 商品模块
- 商品分类管理(猫粮、狗粮、玩具、洗护等)
- 商品列表展示、关键词搜索、分页查询
- 商品详情页(图片、价格、库存、描述)
- 商品上下架管理(管理员)
3.3 购物车模块
- 加入购物车、修改数量、删除商品
- 购物车商品结算
3.4 订单模块
- 订单创建、订单列表、订单详情
- 订单状态流转(待付款、待发货、待收货、已完成、已取消)
- 模拟支付或对接第三方支付
3.5 管理后台
- 商品管理、分类管理、订单管理
- 用户管理、数据统计
4. 数据库设计
核心数据表包括用户表、商品表、分类表、购物车表、订单表、订单明细表、收货地址表等。以下为部分关键表结构示例。
| 表名 | 说明 | 关键字段 |
|---|---|---|
| user | 用户表 | id, username, password, nickname, avatar, phone |
| category | 商品分类表 | id, name, parent_id, sort |
| product | 商品表 | id, category_id, name, price, stock, image, status |
| cart | 购物车表 | id, user_id, product_id, quantity |
| orders | 订单表 | id, order_no, user_id, total_amount, status, create_time |
| order_item | 订单明细表 | id, order_id, product_id, product_name, price, quantity |
5. 核心代码实现
5.1 后端:商品查询接口
@RestController @RequestMapping("/api/product") public class ProductController { @Resource private ProductService productService; @GetMapping("/list") public Result<PageResult<ProductVO>> list(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, @RequestParam(required = false) String keyword, @RequestParam(required = false) Long categoryId) { PageResult<ProductVO> result = productService.pageQuery(page, size, keyword, categoryId); return Result.success(result); } @GetMapping("/{id}") public Result<ProductVO> detail(@PathVariable Long id) { return Result.success(productService.getDetail(id)); } }5.2 前端:商品列表页
<template> <div class="product-list"> <el-input v-model="keyword" placeholder="搜索宠物用品" @keyup.enter="loadData" /> <el-row :gutter="16"> <el-col :span="6" v-for="item in products" :key="item.id"> <el-card :body-style="{ padding: '12px' }"> <img :src="item.image" class="product-img" /> <div class="product-name">{{ item.name }}</div> <div class="product-price">¥{{ item.price }}</div> <el-button type="primary" size="small" @click="addToCart(item)">加入购物车</el-button> </el-card> </el-col> </el-row> </div> </template> <script setup> import { ref, onMounted } from 'vue' import { getProductList } from '@/api/product' const products = ref([]) const keyword = ref('') const loadData = async () => { const res = await getProductList({ keyword: keyword.value }) products.value = res.data.records } onMounted(loadData) </script>6. 部署与运行
6.1 后端启动
# 配置 application.yml 中的数据库连接 mvn clean package -DskipTests java -jar target/pet-mall.jar6.2 前端启动
npm install npm run dev7. 总结与展望
本项目基于 Spring Boot + Vue3 实现了宠物用品线上商城平台的核心功能,前后端分离架构清晰,易于扩展和维护。后续可以进一步优化支付流程、引入消息队列处理高并发订单、增加商品评价与推荐系统,以及接入物流跟踪功能,提升平台的整体服务能力。