基于springboot2+vue3的校园网上店铺系统
1. 代码获取https://blog.xiaobias.com/article/102. 项目简介本项目为“校园网上店铺”系统是一个面向校园用户的电子商务平台。系统支持多角色管理员、商铺、普通用户登录与操作提供商品浏览、购物车、订单管理、商品收藏、评价、公告发布、商铺管理等功能。数据库设计包含用户表、商铺表、商品表、购物车表、订单表、地址表、字典表等能够满足校园场景下的线上购物基本需求。3. 技术栈后端框架Spring Boot 2.2.2.RELEASE持久层框架MyBatis-Plus 2.3 MyBatis数据库MySQL 5.7.32安全与认证Apache Shiro 1.3.2用于权限控制、Token 机制自定义生成与校验前端后台管理Vue 2.x Element UI ECharts axios前端用户界面Layui jQuery Vue辅助工具库Hutool、Fastjson、Apache Commons、POIExcel 导入导出其他百度地图 API用于地址定位、百度人脸识别AipFace、WebSocket未发现但存在线程定时任务4. 详细介绍4.1 功能模块系统分为三个角色管理员、商铺、用户。4.1.1 管理员功能基础数据管理公告类型、会员等级、商铺信用类型、商品类型等字典表维护。公告管理发布、编辑、删除公告。商铺管理审核、查看、删除商铺逻辑删除。商品管理查看所有商品管理商品上下架、评价、收藏、订单。单页数据管理维护“联系我们”、“网站介绍”等单页内容。用户管理查看、修改、删除用户。轮播图管理配置首页轮播图。4.1.2 商铺功能商品管理发布、修改、上下架自己的商品查看商品评价。订单管理查看已支付订单发货填写配送信息处理退款。公告查看查看系统公告。个人信息维护修改商铺资料、营业执照、联系方式等。4.1.3 用户功能商品浏览按分类、关键字搜索商品查看详情点击次数累计。购物车添加商品、修改数量、删除、下单。订单管理下单余额支付、查看订单、确认收货、评价商品、申请退款。收藏管理收藏/取消收藏商品。收货地址管理增删改查设置默认地址。个人信息维护修改个人资料、头像、密码等。余额充值虚拟充值可用于支付订单。积分系统消费获得积分积分累计影响会员等级青铜/白银/黄金等级对应不同折扣。4.2 数据库设计主要数据表基于db.sqlyonghu用户表账户、密码、姓名、手机、身份证、头像、性别、邮箱、余额、总积分、现积分、会员等级shangjia商铺表账户、密码、商铺名称、联系方式、邮箱、营业执照、信用等级、余额、简介、逻辑删除shangpin商品表商铺ID、编号、名称、照片、类型、库存、获得积分、原价、现价、点击次数、介绍、上下架状态、逻辑删除shangpin_order订单表订单号、地址ID、商品ID、用户ID、购买数量、实付价格、配送人、配送人联系方式、订单类型、支付类型、创建时间cart购物车表用户ID、商品ID、购买数量shangpin_collection收藏表商品ID、用户ID、类型、收藏时间shangpin_commentback评价表商品ID、用户ID、评价内容、回复内容、评价时间、回复时间address收货地址表用户ID、收货人、电话、地址、是否默认gonggao公告表名称、图片、类型、发布时间、内容dictionary字典表字段编码、字段名、编码索引、索引名称、父ID、备注config配置表轮播图等参数single_seach单页数据表名字、数据类型、内容token用户token表users管理员表4.3 核心业务逻辑下单流程用户从购物车或商品详情页提交订单 → 选择收货地址 → 选择支付方式余额→ 系统计算折扣根据会员等级→ 扣减余额、增加积分、减少商品库存、增加商铺余额 → 生成订单记录 → 清空购物车对应商品。退款流程用户发起退款订单状态为已支付→ 系统恢复用户余额和积分、恢复商品库存、减少商铺余额 → 订单状态变更为“退款”。发货与收货商铺发货填写配送人信息→ 订单状态变为“已发货” → 用户确认收货 → 订单状态变为“已收货” → 用户可评价。积分与会员等级每笔消费根据商品设定“购买获得积分”字段累加至用户总积分和现积分。总积分达到阈值10000、100000、1000000自动升级会员等级等级对应折扣0.98、0.96、0.95。4.4 项目结构后端代码位于src/main/java/com/包含 controller、service、dao、entity、utils、interceptor、config 等包。前端管理后台代码位于src/main/resources/admin/admin/基于 Vue CLI 构建。前端用户界面位于src/main/resources/front/front/采用 layui jQuery 静态 HTML。配置文件application.yml数据库连接、mybatis-plus 配置、pom.xmlMaven 依赖。5. 部分代码以下从项目中摘取关键代码示例5.1 订单下单核心逻辑ShangpinOrderController.orderRequestMapping(/order)publicRadd(RequestParamMapString,Objectparams,HttpServletRequestrequest){// 获取当前登录用户id、收货地址id、支付类型、购物车商品列表IntegeruserId(Integer)request.getSession().getAttribute(userId);IntegeraddressIdInteger.valueOf(String.valueOf(params.get(addressId)));IntegershangpinOrderPaymentTypesInteger.valueOf(String.valueOf(params.get(shangpinOrderPaymentTypes)));StringdataString.valueOf(params.get(shangpins));JSONArrayjsonArrayJSON.parseArray(data);ListMapshangpinsJSON.parseObject(jsonArray.toString(),List.class);YonghuEntityyonghuEntityyonghuService.selectById(userId);ListShangpinOrderEntityshangpinOrderListnewArrayList();ListShangjiaEntityshangjiaListnewArrayList();ListShangpinEntityshangpinListnewArrayList();ListIntegercartIdsnewArrayList();// 获取会员折扣BigDecimalzhekou...;for(MapString,Objectmap:shangpins){IntegershangpinIdInteger.valueOf(String.valueOf(map.get(shangpinId)));IntegerbuyNumberInteger.valueOf(String.valueOf(map.get(buyNumber)));ShangpinEntityshangpinEntityshangpinService.selectById(shangpinId);// 库存检查if(shangpinEntity.getShangpinKucunNumber()buyNumber){returnR.error(shangpinEntity.getShangpinName()的库存不足);}// 减库存shangpinEntity.setShangpinKucunNumber(shangpinEntity.getShangpinKucunNumber()-buyNumber);// 构建订单项ShangpinOrderEntityshangpinOrderEntity...;if(shangpinOrderPaymentTypes1){// 余额支付DoublemoneynewBigDecimal(shangpinEntity.getShangpinNewMoney()).multiply(newBigDecimal(buyNumber)).multiply(zhekou).doubleValue();// 扣余额、加积分yonghuEntity.setNewMoney(yonghuEntity.getNewMoney()-money);DoublebuyJifennewBigDecimal(shangpinEntity.getShangpinPrice()).multiply(newBigDecimal(buyNumber)).doubleValue();yonghuEntity.setYonghuNewJifen(yonghuEntity.getYonghuNewJifen()buyJifen);// 更新商家余额shangjiaEntity.setNewMoney(shangjiaEntity.getNewMoney()money);shangpinOrderEntity.setShangpinOrderTruePrice(money);}shangpinOrderList.add(shangpinOrderEntity);shangpinList.add(shangpinEntity);shangjiaList.add(shangjiaEntity);cartIds.add(Integer.valueOf(map.get(id).toString()));}// 批量保存订单、更新商品、更新商家、更新用户、删除购物车shangpinOrderService.insertBatch(shangpinOrderList);shangpinService.updateBatchById(shangpinList);shangjiaService.updateBatchById(shangjiaList);yonghuService.updateById(yonghuEntity);if(cartIds.size()0)cartService.deleteBatchIds(cartIds);returnR.ok();}5.2 前端商品详情收藏功能shangpin/detail.html// 收藏商品addShangpinCollection(){let_thisthis;layui.http.request(shangpinCollection/list,get,{page:1,limit:1,shangpinId:_this.detail.id,shangpinCollectionTypes:1,yonghuId:localStorage.getItem(userid),},(res){if(res.data.list.length1){// 已收藏则取消layui.http.requestJson(shangpinCollection/delete,post,[res.data.list[0].id],function(res){layui.layer.msg(取消成功,{time:1000,icon:5},function(){window.location.reload();});});returnfalse;}// 未收藏则添加layui.http.requestJson(shangpinCollection/add,post,{yonghuId:localStorage.getItem(userid),shangpinId:_this.detail.id,shangpinCollectionTypes:1,},function(res){layui.layer.msg(收藏成功,{time:1000,icon:6},function(){window.location.reload();});});});}5.3 字典表转换工具DictionaryServiceImpl.dictionaryConvertpublicvoiddictionaryConvert(Objectobj,HttpServletRequestrequest){// 获取当前对象中所有以Types结尾的Integer字段ListStringfieldNameListnewArrayList();// 反射获取所有字段...// 从ServletContext中获取字典表映射 dictionaryMapMapString,MapInteger,StringdictionaryMap(MapString,MapInteger,String)request.getServletContext().getAttribute(dictionaryMap);// 遍历每个Types字段根据其codeIndex从dictionaryMap中获取对应的indexName赋值给对应的Value字段for(Strings:fieldNameList){Fieldtypes...;Fieldvalue...;intcodeIndextypes.getInt(obj);StringdicCodes.replace(Types,).replaceAll(([a-z])([A-Z]),$1_$2).toLowerCase();StringindexNamedictionaryMap.get(dicCode).get(codeIndex);value.set(obj,indexName);}}aHR0cHM6Ly9ibG9nLnhpYW9iaWFzLmNvbS9hcnRpY2xlLzEw6. 部分截图7. 项目总结校园网上店铺是一个功能完整的B2C电商系统覆盖了商品管理、购物流程、订单处理、会员积分、商户管理、后台运维等核心业务。技术上采用前后端分离管理端Vue用户端传统Layui后端使用Spring Boot MyBatis-Plus快速开发数据库设计合理字典表设计增强了扩展性。系统实现了完整的支付虚拟余额、退款、发货、收货、评价等电商闭环并引入了基于积分的会员等级折扣机制符合校园场景需求。项目代码结构清晰接口遵循RESTful风格包含token认证和权限拦截具备一定的安全性和可维护性。

相关新闻

离线安装Nginx

离线安装Nginx

在离线服务器上执行以下命令,确认基础编译环境是否就绪: gcc --version && make --version && pkg-config --libs pcre zlib openssl如果上述任一命令报错,说明缺少编译依赖。你必须在相同系统的联网机器上提前下载好 gcc, m…

2026/11/9 10:22:54 阅读更多 →
深入剖析Spark UI界面:参数与界面详解

深入剖析Spark UI界面:参数与界面详解

一、概述 Spark UI是Apache Spark内置的Web监控界面,为开发者和运维人员提供对Spark应用程序执行过程的实时、可视化洞察。它以直观的方式展示作业(Jobs)、阶段(Stages)、任务(Tasks)、SQL执行…

2026/11/2 22:05:58 阅读更多 →
基于springboot2+vue2的二手车交易系统

基于springboot2+vue2的二手车交易系统

1. 获取代码https://fifteen.xiaobias.com/source/2222. 项目简介 二手车交易系统,旨在为二手车买卖双方提供一个在线信息发布与交流平台。系统支持三种角色:管理员、商家和普通用户。 管理员:负责系统的整体管理,包括对商家、用户…

2026/11/7 19:36:19 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻