ShopSystem:基于SpringBoot和Vue构建的商城系统

ChenFu 发布于 2026-02-26 106 次阅读


AI 摘要

一个基于Spring Boot和Vue.js的完整商城系统,功能涵盖商品、订单、支付等核心模块,采用前后端分离架构,适合学习和参考。

只是个期末作业 在这里开源了吧! 好多功能还没完善 后续可能还会继续完善

项目地址:ShopSystem: 这是一个基于Spring Boot和Vue.js构建的完整商城系统,支持商品管理、订单管理、用户管理、支付功能等核心电商功能。系统采用前后端分离架构,提供完整的后台管理界面和用户前端界面。 不过是基础版哈

📖 项目简介

这是一个基于Spring Boot和Vue.js构建的完整商城系统,支持商品管理、订单管理、用户管理、支付功能等核心电商功能。系统采用前后端分离架构,提供完整的后台管理界面和用户前端界面。

🎯 主要功能

  • 用户管理:用户注册、登录、个人信息管理
  • 商品管理:商品分类、商品发布、库存管理、图片上传
  • 订单管理:订单创建、支付、状态管理、订单查询
  • 支付功能:集成支付接口,支持支付回调处理
  • 后台管理:完整的管理后台,包含数据统计和配置管理
  • API配置:支持第三方API配置管理
  • 定时任务:订单超时自动取消

🛠️ 技术栈

后端技术

  • 框架:Spring Boot 2.7+
  • 持久层:MyBatis
  • 数据库:MySQL 8.0+
  • 缓存:Redis (可选)
  • 邮件:JavaMail
  • 构建工具:Maven
  • Java版本:JDK 17+

前端技术

  • 框架:Vue 3 + Vite
  • 路由:Vue Router
  • UI组件库:Element Plus
  • HTTP客户端:Axios
  • 开发语言:JavaScript/TypeScript

📁 项目结构

QiMoExam/
├── src/main/java/com/shopsystem/shopping/
│   ├── controller/          # 控制器层
│   │   ├── api/            # API接口
│   │   └── PayResultController.java
│   ├── entity/             # 实体类
│   ├── mapper/             # MyBatis映射器
│   ├── service/            # 业务逻辑层
│   ├── config/             # 配置类
│   ├── interceptor/        # 拦截器
│   ├── common/             # 公共工具类
│   └── task/               # 定时任务
├── src/main/resources/
│   ├── application.yml     # 应用配置
│   ├── mapper/             # XML映射文件
│   └── static/             # 静态资源
├── vue-frontend/           # 前端项目
│   ├── src/
│   │   ├── views/          # 页面组件
│   │   ├── router/         # 路由配置
│   │   └── main.js         # 入口文件
├── sql/                    # 数据库脚本
├── upload/                 # 文件上传目录
└── pom.xml                 # Maven配置

🚀 快速开始

环境要求

  • JDK 17+
  • Maven 3.6+
  • MySQL 8.0+
  • Node.js 16+
  • npm 7+

1. 数据库准备

# 创建数据库
mysql -u root -p
CREATE DATABASE shopsystem CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
​
# 导入数据
mysql -u root -p shopsystem < sql/init.sql

2. 后端配置

编辑 src/main/resources/application.yml

server:
  port: 8080
​
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/shopsystem?useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  mail:
    host: smtp.example.com
    username: your_email@example.com
    password: your_password
    port: 587
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
​
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.shopsystem.shopping.entity
​
# 文件上传配置
file:
  upload-dir: F:/Coding/QiMoExam/upload/

3. 编译运行后端

# 进入项目目录
cd F:/Coding/QiMoExam
​
# 编译项目
mvn clean package
​
# 运行应用
mvn spring-boot:run
# 或者
java -jar target/shopping-1.0.0.jar

应用将在 http://localhost:8080 启动。

4. 前端配置与运行

# 进入前端目录
cd vue-frontend
​
# 安装依赖
npm install
​
# 开发环境运行
npm run dev
​
# 构建生产版本
npm run build

前端将在 http://localhost:5173 启动(Vite默认端口)。

🔧 配置说明

邮件配置

系统支持邮件发送功能,用于用户注册验证等。需要配置SMTP服务器信息。

文件上传

默认上传目录为 F:/Coding/QiMoExam/upload/,可在配置文件中修改。

API配置

系统支持动态配置第三方API参数,通过后台管理界面进行管理。

📡 API接口

用户相关

  • POST /api/user/register - 用户注册
  • POST /api/user/login - 用户登录
  • GET /api/user/profile - 获取用户信息
  • PUT /api/user/profile - 更新用户信息

商品相关

  • GET /api/products - 商品列表
  • GET /api/products/{id} - 商品详情
  • POST /api/products - 添加商品(管理员)
  • PUT /api/products/{id} - 更新商品(管理员)
  • DELETE /api/products/{id} - 删除商品(管理员)

订单相关

  • POST /api/orders - 创建订单
  • GET /api/orders - 订单列表
  • GET /api/orders/{id} - 订单详情
  • POST /api/orders/{id}/pay - 订单支付
  • POST /api/orders/{id}/cancel - 取消订单

支付相关

  • POST /api/pay/notify - 支付回调通知
  • GET /pay/success - 支付成功页面

管理后台

  • GET /api/admin/categories - 分类管理
  • GET /api/admin/orders - 订单管理
  • GET /api/admin/users - 用户管理
  • GET /api/admin/config - API配置管理

🎨 前端页面

用户端

  • 首页 (/) - 商品展示和搜索
  • 登录 (/login) - 用户登录
  • 注册 (/register) - 用户注册
  • 商品详情 (/product/:id) - 商品详情页
  • 我的订单 (/orders) - 订单列表
  • 个人中心 (/profile) - 个人信息管理
  • 订单结果 (/order-result) - 订单支付结果

管理后台

  • 登录 (/admin/login) - 管理员登录
  • 首页 (/admin) - 数据统计
  • 商品管理 (/admin/product) - 商品CRUD
  • 分类管理 (/admin/category) - 分类管理
  • 订单管理 (/admin/order) - 订单处理
  • 用户管理 (/admin/user) - 用户管理
  • API配置 (/admin/api-config) - API配置

🔐 安全机制

后端安全

  • 登录拦截器LoginInterceptor - 验证用户登录状态
  • 管理员拦截器AdminInterceptor - 验证管理员权限
  • 密码加密:使用MD5或BCrypt加密存储
  • 会话管理:基于Token的认证机制

前端安全

  • 路由守卫:拦截未授权访问
  • Token存储:localStorage存储认证信息
  • 权限控制:根据用户角色显示不同界面

📊 数据库设计

主要数据表:

  • user - 用户表
  • product - 商品表
  • category - 分类表
  • order - 订单表
  • api_config - API配置表

详细表结构请查看 sql/init.sql

🔄 定时任务

系统包含订单超时处理定时任务:

  • OrderTimeoutTask:每分钟检查一次,自动取消超时未支付订单(默认30分钟超时)

📝 开发说明

代码规范

  • 使用驼峰命名法
  • 实体类使用 @Data 注解
  • Service层使用 @Service 注解
  • Controller层使用 @RestController 注解

开发流程

  1. 创建实体类(Entity)
  2. 创建Mapper接口和XML
  3. 创建Service业务逻辑
  4. 创建Controller接口
  5. 前端对应页面开发

测试建议

  • 使用Postman测试API接口
  • 前端使用浏览器开发者工具调试
  • 数据库操作前备份数据

🐛 常见问题

1. 数据库连接失败

检查 application.yml 中的数据库配置,确保MySQL服务已启动。

2. 前端跨域问题

后端已配置CORS支持,确保前端请求地址正确。

3. 文件上传失败

确保上传目录存在且有写入权限。

4. 邮件发送失败

检查SMTP配置,确保网络连接正常。

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目仅供学习和参考使用。

📞 联系方式


注意:在生产环境中使用前,请务必修改默认密码、配置安全的认证机制,并根据实际需求调整相关配置。

此作者没有提供个人介绍。
最后更新于 2026-02-26