只是个期末作业 在这里开源了吧! 好多功能还没完善 后续可能还会继续完善
📖 项目简介
这是一个基于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注解
开发流程
- 创建实体类(Entity)
- 创建Mapper接口和XML
- 创建Service业务逻辑
- 创建Controller接口
- 前端对应页面开发
测试建议
- 使用Postman测试API接口
- 前端使用浏览器开发者工具调试
- 数据库操作前备份数据
🐛 常见问题
1. 数据库连接失败
检查 application.yml 中的数据库配置,确保MySQL服务已启动。
2. 前端跨域问题
后端已配置CORS支持,确保前端请求地址正确。
3. 文件上传失败
确保上传目录存在且有写入权限。
4. 邮件发送失败
检查SMTP配置,确保网络连接正常。
🤝 贡献指南
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
📄 许可证
本项目仅供学习和参考使用。
📞 联系方式
- 项目地址:https://gitee.com/chenfu666/ShopSystem.git
- 作者:ChenFu
注意:在生产环境中使用前,请务必修改默认密码、配置安全的认证机制,并根据实际需求调整相关配置。
Comments 2 条评论
Warning: 通过IP-API获取IP地理位置失败:cURL error 28: Connection timed out after 5000 milliseconds in /www/wwwroot/blog.ichenfu.cn/wp-content/themes/Sakurairo/inc/classes/IpLocation.php on line 64
Warning: 获取IP地理位置失败 in /www/wwwroot/blog.ichenfu.cn/wp-content/themes/Sakurairo/inc/classes/IpLocation.php on line 170
Unknown
第一
Warning: 通过IP-API获取IP地理位置失败:cURL error 28: Connection timed out after 5000 milliseconds in /www/wwwroot/blog.ichenfu.cn/wp-content/themes/Sakurairo/inc/classes/IpLocation.php on line 64
Warning: 获取IP地理位置失败 in /www/wwwroot/blog.ichenfu.cn/wp-content/themes/Sakurairo/inc/classes/IpLocation.php on line 170
Unknown
@ChenFu 11