基于springboot2+vue2的网上服装商城
1. 获取地址
https://fifteen.xiaobias.com/source/212
2. 项目简介
本项目是一个完整的“网上服装商城”系统,基于 Spring Boot + MyBatis Plus 构建后端,采用前后端分离架构。项目包含了完整的用户端购物流程(浏览商品、加入购物车、下单、支付、评价)以及后台管理系统(商品管理、订单处理、用户管理等)。系统支持会员等级与积分体系,并提供了服装分类展示、轮播图管理、公告发布等功能模块。代码结构清晰,包含完整的数据库脚本、后端业务逻辑、以及基于 Vue/Element UI 的现代化管理后台和基于 Layui/jQuery 的轻量级用户商城前端。
3. 技术栈
3.1 后端技术
- 核心框架:Spring Boot 2.2.2.RELEASE
- ORM 框架:MyBatis Plus 2.3 (集成 MyBatis)
- 安全框架:Apache Shiro 1.3.2 (用于身份验证与权限控制)
- 数据库:MySQL 5.7.32
- 连接池:Spring Boot 默认 (HikariCP)
- 工具库:
fastjson(JSON 处理)hutool-all(Java 工具类库)commons-lang3,commons-io(通用工具)poi(Excel 导入导出)jsoup(HTML 解析,用于富文本处理)
- API 文档:无,通过自定义注解和 JSON 交互
3.2 前端技术 - 管理后台 (/admin)
- 核心框架:Vue 2.x
- UI 组件库:Element UI
- 路由:Vue Router (Hash 模式)
- HTTP 请求:Axios
- 构建工具:Vue CLI (通过
babel.config.js判断) - 图表库:ECharts
- 富文本编辑器:Tinymce
3.3 前端技术 - 用户商城 (/front)
- 核心库:Layui (主要 UI 与交互), Vue 2.x (辅助数据绑定)
- 样式:自定义 CSS、Bootstrap (
xznstatic/css/bootstrap.min.css) - 功能插件:
- 轮播图 (Layui Carousel)
- 图片上传、Excel 导出 (
vue-json-excel) - 二维码生成 (
vue-qr) - 打印功能 (
print-js)
3.4 数据库
- 类型:关系型数据库 MySQL
- 核心表:
yonghu(用户),fuzhuang(服装),fuzhuang_order(订单),address(地址),cart(购物车),dictionary(字典表),gonggao(公告),config(配置) 等。
4. 详细介绍
4.1 系统功能模块
系统主要分为两个角色:管理员和普通用户。
管理员功能 (
/admin后台):- 基础数据管理:管理服装类型、公告类型、会员等级类型等字典数据。
- 服装管理:对服装进行增删改查、上下架管理,查看商品详情、评价。
- 订单管理:查看所有用户订单,进行发货操作(填写快递单号、公司)。
- 用户管理:查看和管理注册用户信息,重置用户密码。
- 公告管理:发布、编辑、删除网站公告信息。
- 系统管理:配置网站轮播图。
用户功能 (
/front商城):- 浏览与搜索:查看首页轮播图、服装列表,按服装类型筛选、关键词搜索服装。
- 商品详情:查看服装的详细信息、库存、价格、用户评价。
- 购物车:将商品加入购物车,修改购买数量或删除商品。
- 订单流程:
- 下单:选择收货地址、支付方式(余额/积分),提交订单。
- 支付:模拟支付过程,扣减用户余额或积分,增加消费积分。
- 收货:确认收货,完成交易。
- 退款:在已支付未发货状态下申请退款。
- 评价:收货后对商品进行评价。
- 个人中心:修改个人信息、查看/管理收货地址、查看我的订单和收藏列表。
- 积分与会员:购物获得积分,积分可用来兑换商品。消费总积分达到阈值可提升会员等级,享受折扣。
4.2 核心业务逻辑
- 购物流程:
- 用户浏览商品 → 点击“立即购买”或从购物车结算 → 选择收货地址和支付方式 → 提交订单。
- 后端
FuzhuangOrderController的/order接口处理下单逻辑:校验库存、计算折扣和总价、扣减用户余额或积分、增加用户消费积分、更新商品库存、生成订单、清空购物车。
- 会员与积分体系:
- 用户表
yonghu中huiyuandengji_types字段标识会员等级,yonghu_sum_jifen记录总积分。 - 下单后,根据订单金额(
fuzhuang_price字段)为用户增加积分。总积分变化后,系统会重新计算其会员等级(青铜、白银、黄金),不同等级享受不同折扣(beizhu字段标识折扣率)。
- 用户表
- 权限控制:
- 后端使用 Shiro 框架和自定义
AuthorizationInterceptor拦截器进行身份验证。 - 除登录、注册、获取字典数据等接口使用
@IgnoreAuth注解跳过验证外,其他接口均需要携带 Token 进行访问。 - 前端管理后台使用
menu.js配置菜单和按钮权限,通过isAuth方法控制不同角色的可见操作。
- 后端使用 Shiro 框架和自定义
4.3 项目特色
- 完整的电商闭环:从浏览、购物车、下单、支付到售后评价,流程完整。
- 双前端架构:兼顾了后台管理的开发效率和商城前端的性能与轻量性。管理后台使用 Vue/Element UI,组件化、可维护性强;商城前端使用 Layui/jQuery,对搜索引擎 SEO 更友好,加载速度快。
- 灵活的字典管理:页面上的下拉选项、分类等均通过数据库中的
dictionary表动态维护,无需修改代码即可调整。 - 清晰的代码结构:严格遵循 MVC 模式,
Controller→Service→Dao/Mapper层次分明,并使用了@RestController、@Service、@Transactional等标准注解。
5. 部分代码
5.1 核心实体类示例 -FuzhuangEntity.java(服装实体)
packagecom.entity;importcom.baomidou.mybatisplus.annotations.TableId;importcom.baomidou.mybatisplus.annotations.TableName;importcom.fasterxml.jackson.annotation.JsonFormat;importorg.springframework.format.annotation.DateTimeFormat;importjava.io.Serializable;importjava.util.Date;/** * 服装 */@TableName("fuzhuang")publicclassFuzhuangEntity<T>implementsSerializable{privatestaticfinallongserialVersionUID=1L;@TableId(type=IdType.AUTO)privateIntegerid;// 主键privateStringfuzhuangName;// 服装名称privateStringfuzhuangPhoto;// 服装照片privateIntegerfuzhuangTypes;// 服装类型 (关联字典表)privateIntegerfuzhuangKucunNumber;// 服装库存privateIntegerfuzhuangPrice;// 购买获得积分privateDoublefuzhuangOldMoney;// 服装原价privateDoublefuzhuangNewMoney;// 现价/积分privateIntegerfuzhuangClicknum;// 点击次数privateStringfuzhuangContent;// 服装简介privateIntegershangxiaTypes;// 是否上架 (1:上架 2:下架)privateIntegerfuzhuangDelete;// 逻辑删除 (1:未删除 2:已删除)@JsonFormat(locale="zh",timezone="GMT+8",pattern="yyyy-MM-dd HH:mm:ss")@DateTimeFormatprivateDatecreateTime;// 创建时间// ... 省略 getter 和 setter 方法}5.2 核心控制器示例 -FuzhuangOrderController.java(订单下单逻辑)
packagecom.controller;// ... 省略导入@RestController@RequestMapping("/fuzhuangOrder")publicclassFuzhuangOrderController{@AutowiredprivateFuzhuangOrderServicefuzhuangOrderService;@AutowiredprivateFuzhuangServicefuzhuangService;@AutowiredprivateYonghuServiceyonghuService;@AutowiredprivateCartServicecartService;@AutowiredprivateDictionaryServicedictionaryService;/** * 添加订单 (前端下单接口) */@RequestMapping("/order")publicRadd(@RequestParamMap<String,Object>params,HttpServletRequestrequest){// 1. 获取参数:收货地址ID、支付方式、购买商品列表等StringfuzhuangOrderUuidNumber=String.valueOf(newDate().getTime());IntegeruserId=(Integer)request.getSession().getAttribute("userId");IntegeraddressId=Integer.valueOf(String.valueOf(params.get("addressId")));IntegerfuzhuangOrderPaymentTypes=Integer.valueOf(String.valueOf(params.get("fuzhuangOrderPaymentTypes")));Stringdata=String.valueOf(params.get("fuzhuangs"));List<Map>fuzhuangs=JSON.parseObject(data,List.class);// 2. 获取用户信息,并计算折扣YonghuEntityyonghuEntity=yonghuService.selectById(userId);BigDecimalzhekou=getDiscount(yonghuEntity.getHuiyuandengjiTypes());// 3. 循环处理每个商品for(Map<String,Object>map:fuzhuangs){IntegerfuzhuangId=Integer.valueOf(String.valueOf(map.get("fuzhuangId")));IntegerbuyNumber=Integer.valueOf(String.valueOf(map.get("buyNumber")));FuzhuangEntityfuzhuangEntity=fuzhuangService.selectById(fuzhuangId);// 4. 校验库存if(fuzhuangEntity.getFuzhuangKucunNumber()<buyNumber){returnR.error(fuzhuangEntity.getFuzhuangName()+"的库存不足");}// 5. 扣减库存fuzhuangEntity.setFuzhuangKucunNumber(fuzhuangEntity.getFuzhuangKucunNumber()-buyNumber);// 6. 计算金额并处理支付 (余额/积分逻辑)// ... 代码省略 ...// 7. 创建订单实体并保存FuzhuangOrderEntityfuzhuangOrderEntity=newFuzhuangOrderEntity<>();// ... 赋值 ...fuzhuangOrderService.insert(fuzhuangOrderEntity);}// 8. 更新用户信息、清空购物车yonghuService.updateById(yonghuEntity);cartService.deleteBatchIds(cartIds);returnR.ok();}// ... 省略其他方法}5.3 前端路由配置 -router-static.js(部分)
importVuefrom'vue';importVueRouterfrom'vue-router'Vue.use(VueRouter);// 导入页面组件importIndexfrom'@/views/index'importHomefrom'@/views/home'importLoginfrom'@/views/login'// ... 省略其他导入constroutes=[{path:'/index',name:'首页',component:Index,children:[{path:'/',name:'首页',component:Home,meta:{icon:'',title:'center'}},{path:'/updatePassword',name:'修改密码',component:UpdatePassword},// 动态管理的模块路由{path:'/fuzhuang',name:'服装管理',component:()=>import('@/views/modules/fuzhuang/list')},{path:'/fuzhuangOrder',name:'服装订单管理',component:()=>import('@/views/modules/fuzhuangOrder/list')},{path:'/yonghu',name:'用户管理',component:()=>import('@/views/modules/yonghu/list')},// ... 省略其他模块路由]},{path:'/login',name:'login',component:Login},{path:'/',redirect:'/index'},/* 默认跳转路由 */{path:'*',component:NotFound}/* 404 */]constrouter=newVueRouter({mode:'hash',routes});exportdefaultrouter;6. 部分截图
7. 项目总结
项目完整性高:该网上服装商城系统是一个功能完善、逻辑清晰的综合性电商项目。它覆盖了电商业务的核心流程,从用户端购物体验到后台运营管理均有良好实现。项目代码量充足,结构完整,具备实际部署和二次开发的基础。
技术选型合理且实用:项目采用 Spring Boot + MyBatis Plus 作为后端基础,快速稳定。前端方面,管理后台使用 Vue + Element UI,展现了现代化工程化的开发实践;用户商城前端使用 Layui + jQuery,兼顾了开发效率和浏览器兼容性,是一种务实的技术选择。数据库设计使用了字典表来维护常量,具有良好的扩展性。
业务逻辑清晰,细节到位:项目不仅实现了基本的增删改查,还处理了复杂电商逻辑,如:
- 订单状态流转:已支付、已发货、已收货、已评价、退款。
- 库存扣减:下单时即时扣减,避免超卖。
- 会员与积分体系:积分获取、消费积分、会员等级与折扣挂钩,增强了用户粘性。
- 权限控制:前后端都实现了基于角色的访问控制,保障了系统安全。
代码规范与可维护性:后端代码遵循统一的命名规范和分层架构,
Controller、Service、Mapper职责清晰。前端管理后台采用组件化开发,路由和菜单配置通过独立文件维护,提高了代码的可读性和可维护性。注释较为详细,便于理解。
总体而言,这是一个质量较高、功能完备、基于主流技术栈的企业级毕业设计或练习项目,非常适合开发者学习电商系统的开发流程和核心业务实现。
