返回作品
手机网上商城系统
创建于 2025 年 11 月 5 日
项目介绍
手机网上商城系统是一个面向手机品牌专卖场景的 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/下的product、category、order三个目录。 - 用户端:独立应用
web-user(Vue 2 + Element UI + Vue Router history 模式 + Vuex),src/views/下共 9 个页面:首页、登录、注册、商品列表、商品详情、购物车、确认订单、我的订单、个人中心。 - 数据库:MySQL 8,在若依系统表(
sys_user、sys_role、sys_menu等)之外扩展了 7 张商城业务表:myuser(商城用户)、category(分类)、product(商品)、cart(购物车)、order(订单)、order_item(订单项)、address(收货地址)。 - 权限体系:完全复用若依 RBAC,
menu.sql注册”商城管理”目录及商品/分类/订单三组菜单,细粒度按钮权限如mall:product:add、mall: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):提供list、export(若依ExcelUtil导出订单 Excel)、getInfo、add、edit、remove、changeStatus状态修改,以及专门的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_id、idx_brand、idx_price、idx_status),支持热门、新品按标记筛选。 - order:
uk_order_no唯一约束订单号;order_status五态(0 待支付 / 1 已支付 / 2 已发货 / 3 已完成 / 4 已取消),并冗余pay_time、ship_time、finish_time、cancel_time四个状态时间戳;收货信息以receiver_name、receiver_phone、receiver_address快照冗余在订单上,避免地址变更影响历史订单。 - order_item:订单明细快照商品名称、图片、单价与数量,
idx_order_id、idx_product_id支撑明细追溯。 - cart:
uk_user_product唯一约束保证”一个用户一个商品一行”,重复加购走数量累加而非新增记录;checked字段标记勾选状态。 - address:省市区三段 + 详细地址 +
is_default默认地址标记,购物车与订单页按需联动。
功能截图
暂无运行截图