水果售卖系统
创建于 2025 年 11 月 5 日
项目介绍
水果售卖系统是一个前后端分离的多角色水果电商平台,项目代码分为后端服务、管理后台和 PC 用户端三个部分,并附带完整的 MySQL 数据库脚本与启动文档。系统围绕水果商品的”浏览 → 加购 → 下单 → 支付 → 发货 → 收货”全流程设计,同时兼顾了卖家发布商品、管理员运营维护的实际需求。
项目后端基于 Spring Boot 2.7.18 构建,使用 MyBatis-Plus 完成数据访问、Druid 管理数据库连接池、JWT 实现无状态登录认证,密码采用 BCrypt 加密存储;两个前端分别基于 Vue 3 + Vite + Element Plus 开发,通过 Axios 调用统一以 /api 为前缀的 REST 接口。数据库脚本中包含地址、购物车、分类、水果商品、订单、订单项、用户共 7 张表,预置了砂糖橘、红富士苹果、海南芒果、巨峰葡萄、西瓜等示例商品数据,开箱即可演示。
项目架构
整个项目采用经典的前后端分离三层架构,共包含四个子模块:
| 模块 | 技术栈 | 说明 |
|---|---|---|
| 20251105-java-水果售卖系统 | Spring Boot 2.7.18、MyBatis-Plus 3.5.3.1、MySQL 8、Druid、JWT | 后端服务,端口 8080,上下文路径 /api |
| 20251105-admin-水果售卖系统 | Vue 3、Vite、Element Plus、Pinia | 管理后台,端口 3000,含首页统计、用户/分类/商品/订单管理 |
| 20251105-pc-水果售卖系统 | Vue 3、Vite、Element Plus、Pinia | PC 用户端,端口 3001,含商城首页、购物车、结算、个人中心 |
| database | MySQL 8 脚本 | 建表语句与示例数据,全部表使用 utf8mb4 字符集 |
后端代码按 controller → service → mapper → entity 分层组织:controller 再细分为 admin(后台管理)、user(用户端)与 common(公共上传)三个包;公共层提供统一的 Result 响应封装与 PageResult 分页结果;config 包中配置了跨域(CORS)、MyBatis-Plus 分页插件、字段自动填充与 WebMvc 拦截器。JWT 令牌由 JwtUtil 生成,UserContextInterceptor 拦截请求并把当前用户信息写入 UserContext,前端在路由守卫中根据本地 Token 控制页面访问权限。
数据模型上,商品表 fruit 通过 seller_id 关联发布商品的卖家,通过 category_id 归属分类;订单表 orders 与订单项表 order_item 为一对多关系,并记录了支付、发货、完成、取消等完整时间线;用户表 user_fruit 通过 user_type 区分买家(1)、卖家(2)与双身份(3),管理员同样以用户形式存在,后台可对用户启用/禁用、调整类型和重置密码。
核心功能
多角色与商品发布。 系统支持买家、卖家、管理员三种角色:用户可注册为买家,也可成为卖家发布水果商品;商品支持规格、价格、库存、单位(默认”斤”)、主图与多图、产地、描述等字段,并区分上架/下架状态,用户端只展示上架商品。后台预置账号 admin/admin123 与 seller1/123456 便于演示。
商品浏览与筛选。 用户端首页支持按分类(柑橘类、热带水果、温带水果、浆果类、瓜果类等)浏览、按商品名称关键词搜索、按价格区间筛选,所有列表均分页返回;商品详情页展示主图、价格、库存、产地与销量信息,超出库存会阻止购买。
购物车与地址。 购物车支持添加商品、修改数量、删除、批量删除与一键清空,并提供购物车商品数量角标接口;用户可维护多条收货地址并设置默认地址,下单时自动带入默认收货信息。
按卖家自动拆单的订单流程。 下单时后端会按卖家对订单项分组,为每个卖家生成独立的子订单,同步扣减库存并清空对应购物车项;订单状态覆盖待支付 → 已支付 → 已发货 → 已完成 → 已取消的完整流转,用户可支付、取消、确认收货,卖家/管理员可发货并填写快递公司与单号,整个下单过程由 @Transactional 事务保证一致性。
管理后台与数据统计。 管理后台提供用户管理(禁用、修改角色类型、重置密码)、分类管理(启用/停用、排序)、商品管理(上下架、调整库存、删除)与订单管理(发货、取消);首页提供订单数与总销售额统计,支持按日期区间查询,并提供”今日统计”快捷接口。
功能截图
暂无运行截图。
快速上手
- 创建数据库并导入脚本:
mysql -u root -p -e "CREATE DATABASE fruit_sales_system DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p fruit_sales_system < database/20251105-shuiguo.sql
- 修改
20251105-java-水果售卖系统/src/main/resources/application.yml中的数据库用户名与密码,然后启动后端:
cd 20251105-java-水果售卖系统
mvn spring-boot:run
- 分别启动管理后台与 PC 用户端:
cd 20251105-admin-水果售卖系统 && npm install && npm run dev # http://localhost:3000
cd 20251105-pc-水果售卖系统 && npm install && npm run dev # http://localhost:3001
- 登录体验:管理后台使用 admin / admin123;用户端注册新账号后即可浏览商品、加购并模拟下单支付。
总结
水果售卖系统是一个业务闭环完整、可直接运行演示的商城类项目:从前端到后端、从数据库脚本到启动文档一应俱全,覆盖了商品管理、购物车、拆单下单、订单状态流转、多角色后台等电商核心场景。技术选型务实——Spring Boot + MyBatis-Plus 提供稳定的数据访问与事务保障,Vue 3 + Element Plus 带来成熟的管理界面,JWT + BCrypt 保证了基础安全。项目按卖家自动拆单、按日期区间统计销售额等设计也体现了对真实电商业务的理解,适合作为学习前后端分离商城开发、Spring Boot 实战与 Vue 3 工程化实践的参考案例。