返回作品

手机网上商城系统

创建于 2025 年 11 月 5 日

标签
  • Java
  • Spring Boot 2.5
  • RuoYi 3.9.0
  • Spring Security
  • MyBatis
  • MySQL 8
  • Vue 2
  • Element UI
  • Vuex
  • Vue Router
  • Axios

项目介绍

手机网上商城系统是一个面向手机品牌专卖场景的 B2C 商城项目,基于若依 RuoYi 3.9.0 快速开发平台二次开发。仓库分为三部分:RuoYi-java-网上商城手机售卖系统(Spring Boot 多模块后端)、web-admin-网上商城手机售卖系统(管理后台)、web-user-网上商城手机售卖系统(独立的用户端 Vue 应用),另附三份 SQL 脚本——20251105-shouji.sql 全量数据库、database_design.sql 数据库设计文档、menu.sql 菜单与权限脚本,导入后即可运行演示。

项目按品牌预置了 8 个商品分类(苹果、华为、小米、OPPO、vivo、荣耀、三星、一加),并填充了 8 款旗舰机示例数据(iPhone 15 Pro Max 9999 元、华为 Mate 60 Pro 6999 元、小米 14 Pro 4999 元等),每款均带真实感十足的价格、库存、销量、JSON 规格参数与富文本图文详情。用户端与后台完全分离,管理端负责商品、分类、订单的运营维护,用户端独立完成从浏览、加购到下单、支付的整套购物流程。

技术架构

  • 后端:Spring Boot 2.5.15 + RuoYi 3.9.0 多模块工程,集成 Spring Security(JWT)、MyBatis、Quartz 定时任务;商城业务以 mall(后台管理)与 user(用户端 API)两组 Controller 挂在 ruoyi-admin 下,domain / service / mapper 落在 ruoyi-system 模块。
  • 管理端:Vue 2.6 + Element UI 2.15 + Vuex + Axios,业务页面集中在 src/views/mall/ 下的 productcategoryorder 三个目录。
  • 用户端:独立应用 web-user(Vue 2 + Element UI + Vue Router history 模式 + Vuex),src/views/ 下共 9 个页面:首页、登录、注册、商品列表、商品详情、购物车、确认订单、我的订单、个人中心。
  • 数据库:MySQL 8,在若依系统表(sys_usersys_rolesys_menu 等)之外扩展了 7 张商城业务表:myuser(商城用户)、category(分类)、product(商品)、cart(购物车)、order(订单)、order_item(订单项)、address(收货地址)。
  • 权限体系:完全复用若依 RBAC,menu.sql 注册”商城管理”目录及商品/分类/订单三组菜单,细粒度按钮权限如 mall:product:addmall:order:ship,后端接口以 @PreAuthorize("@ss.hasPermi('mall:order:list')") 校验。

核心功能(管理端)

管理端提供商品、分类、订单三大运营模块,全部沿用若依增删改查与权限风格:

  • 商品管理mall/product/index.vue + ProductController):支持按名称、分类、品牌、状态多维搜索;商品字段覆盖 price 销售价 / original_price 原价、stock 库存、sales 销量、status 上下架、is_hot 热门、is_new 新品标记;规格参数 specs 以 JSON 文本存储(如 {"屏幕":"6.7英寸","芯片":"A17 Pro","内存":"8GB","存储":"256GB"}),详情 description 为富文本 HTML,图片支持主图 main_image 加多图 images(逗号分隔),并提供按若依惯例的导出功能。
  • 分类管理:品牌分类带 parent_id 层级字段与 order_num 排序,可扩展子分类。
  • 订单管理OrderController):提供 listexport(若依 ExcelUtil 导出订单 Excel)、getInfoaddeditremovechangeStatus 状态修改,以及专门的 ship 发货接口(PUT /mall/order/ship/{orderId},写发货时间)。

用户端购物流程

用户端 API 与后台分离:UserProductController/api/product)强制只查询上架商品(product.setStatus("0")),提供列表、分类查询、关键词搜索三个接口;UserOrderController/api/order)实现下单与状态流转:

  • 创建订单:从 SecurityUtils.getUserId() 取当前登录用户,服务端生成订单号 ORD + 时间戳 + 随机数,逐行计算订单项小计与订单总额,初始状态置为待支付;OrderServiceImpl.insertOrder 标注 @Transactional,在事务内插入主单并批量写入 order_item
  • 状态机:支付 pay(0→1,记 pay_time)、确认收货 confirm(→3 已完成,记 finish_time)、取消 cancel(→4,记 cancel_time),管理员发货后进入”已发货”;支付为模拟实现。
  • 前端闭环:首页轮播图 + 热门推荐 → 商品列表按分类/关键词筛选 → 商品详情页解析规格 JSON 并展示富文本图文、一键加购 → 购物车支持勾选/全选、数量上限(:max="scope.row.stock")与合计金额 → 确认订单页表单校验收货人信息后提交 → 我的订单页按状态 Tab 筛选,可模拟支付、确认收货、取消订单。
  • 用户体系:商城用户使用独立 myuser 表(与若依后台 sys_user 分离),密码 BCrypt 加密,UserAuthController 提供注册、登录、获取用户信息、退出、修改资料接口,用户端登录后携带 token 访问需认证的购物车/订单页面。

数据库设计

业务表设计紧扣商城场景,关键取舍如下:

  • product:价格与销量同表存储(price/original_price/stock/sales),specs 用 JSON 文本承载机型参数、description 存富文本 HTML、images 逗号分隔多图;对分类、品牌、价格、状态建立四个索引(idx_category_ididx_brandidx_priceidx_status),支持热门、新品按标记筛选。
  • orderuk_order_no 唯一约束订单号;order_status 五态(0 待支付 / 1 已支付 / 2 已发货 / 3 已完成 / 4 已取消),并冗余 pay_timeship_timefinish_timecancel_time 四个状态时间戳;收货信息以 receiver_namereceiver_phonereceiver_address 快照冗余在订单上,避免地址变更影响历史订单。
  • order_item:订单明细快照商品名称、图片、单价与数量,idx_order_ididx_product_id 支撑明细追溯。
  • cartuk_user_product 唯一约束保证”一个用户一个商品一行”,重复加购走数量累加而非新增记录;checked 字段标记勾选状态。
  • address:省市区三段 + 详细地址 + is_default 默认地址标记,购物车与订单页按需联动。

功能截图

暂无运行截图