1. 资源https://blog.xiaobias.com/article/42. 项目简介校园商铺管理系统是一个面向校园场景的在线交易平台旨在为校园内的商家和学生用户提供一个便捷的商品交易、订单管理和信息交流环境。系统支持三种角色管理员、商家和普通用户。管理员负责系统基础数据维护、商家审核及整体监管商家可以管理商品、处理订单用户则能够浏览商品、加入购物车、下单、评价以及管理收货地址和个人信息。系统包含完整的购物流程商品浏览 → 购物车 → 确认订单 → 支付 → 发货 → 收货 → 评价并提供了公告发布、收藏、充值等功能。3. 技术栈层级技术选型后端框架Spring Boot 2.2.2.RELEASE、Mybatis-Plus 2.3、Apache Shiro 1.3.2前端后台Vue 2.x、Element UI、axios、vue-router、echarts前端前台LayUI、jQuery、Bootstrap、Vue部分使用数据库MySQL 5.7驱动 mysql-connector-java工具库Fastjson、Hutool、Apache Commons Lang3等其他基于Token的接口鉴权、文件上传下载、Excel批量导入、百度地图API4. 详细介绍4.1 数据库设计表名说明核心字段yonghu用户表账号、密码、姓名、手机号、身份证、头像、性别、邮箱、余额shangjia商家表账号、密码、商家名称、联系方式、邮箱、营业执照、地址、信用等级、状态、余额shangpin商品表所属商家、商品名、图片、类型、库存、原价、现价、点击量、介绍、上下架状态shangpin_order订单表订单号、收货地址、商品、用户、购买数量、实付价格、订单类型已评价/退款/已支付/已发货/已收货、支付类型cart购物车表所属用户、商品、购买数量address收货地址表所属用户、收货人、电话、地址、是否默认shangpin_collection商品收藏表商品、用户、收藏时间shangpin_commentback商品评价表商品、用户、评价内容、回复内容gonggao公告信息表公告名称、图片、类型、发布时间、详情dictionary字典表存储各种下拉选项商品类型、订单状态、商家信用等级等config配置文件表存储轮播图路径等系统配置tokentoken表用户id、用户名、表名、角色、token、过期时间users管理员表用户名、密码、角色4.2 功能模块4.2.1 管理员端基础数据管理管理公告类型、商家信用类型、商品类型等字典数据。公告信息管理发布、修改、删除公告。商家管理审核商家入驻申请待审核/使用/禁用查看商家信息。商品管理查看所有商品管理商品上下架处理商品评价查看订单。用户管理查看、修改、删除用户信息。轮播图管理配置前台首页轮播图。4.2.2 商家端商品管理添加、修改、删除自己的商品控制上下架。商品评价管理查看用户对自己的商品的评价并可回复。订单管理查看订单列表支持“发货”操作将订单状态从“已支付”改为“已发货”。4.2.3 用户端前台浏览与搜索查看首页轮播图、商品推荐、公告信息、商家列表等支持按商品类型筛选、关键字搜索。购物车将商品加入购物车修改购买数量删除购物车项下单结算。订单流程确认订单选择收货地址提交订单。支付使用账户余额支付系统模拟支付。收货收到商品后确认收货订单状态变为“已完成”。评价对已完成的订单进行评价含评分。收藏收藏喜欢的商品可在个人中心查看并取消收藏。个人中心修改个人信息头像、手机号、邮箱等管理收货地址查看订单历史充值余额。公告查看查看系统发布的公告详情。4.3 系统架构后端采用经典的Controller → Service → Dao三层结构使用Spring Boot管理BeanMybatis-Plus简化数据访问。基于自定义AuthorizationInterceptor实现Token鉴权白名单路径如登录、注册、部分公开接口无需Token。字典表数据在项目启动时加载到ServletContext中便于全局快速转换。前端后台Vue单页应用通过axios请求后端API路由使用vue-routerElement UI构建管理界面。前端前台多页面HTML LayUI jQuery通过iframe嵌入各个功能页面使用localStorage存储登录状态和购物车临时数据。5. 部分代码5.1 订单生成核心逻辑ShangpinOrderController.orderRequestMapping(/order)publicRadd(RequestParamMapString,Objectparams,HttpServletRequestrequest){StringshangpinOrderUuidNumberString.valueOf(newDate().getTime());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();// 处理每个商品扣减库存、计算金额、修改余额、生成订单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);// 余额支付处理DoublemoneyshangpinEntity.getShangpinNewMoney()*buyNumber;if(yonghuEntity.getNewMoney()-money0){returnR.error(余额不足,请充值);}yonghuEntity.setNewMoney(yonghuEntity.getNewMoney()-money);// 生成订单记录ShangpinOrderEntityordernewShangpinOrderEntity();order.setShangpinOrderUuidNumber(shangpinOrderUuidNumber);order.setAddressId(addressId);order.setShangpinId(shangpinId);order.setYonghuId(userId);order.setBuyNumber(buyNumber);order.setShangpinOrderTypes(3);// 已支付order.setShangpinOrderPaymentTypes(shangpinOrderPaymentTypes);order.setShangpinOrderTruePrice(money);order.setInsertTime(newDate());shangpinOrderList.add(order);shangpinList.add(shangpinEntity);}// 批量保存订单、更新商品库存、更新用户余额shangpinOrderService.insertBatch(shangpinOrderList);shangpinService.updateBatchById(shangpinList);yonghuService.updateById(yonghuEntity);returnR.ok();}5.2 Token拦截器AuthorizationInterceptor.preHandlepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler){// 跨域支持response.setHeader(Access-Control-Allow-Origin,request.getHeader(Origin));// 检查是否需要忽略鉴权if(handlerinstanceofHandlerMethod){IgnoreAuthannotation((HandlerMethod)handler).getMethodAnnotation(IgnoreAuth.class);if(annotation!null)returntrue;}Stringtokenrequest.getHeader(Token);TokenEntitytokenEntitytokenService.getTokenEntity(token);if(tokenEntity!null){request.getSession().setAttribute(userId,tokenEntity.getUserid());request.getSession().setAttribute(role,tokenEntity.getRole());returntrue;}// 未登录返回401response.setContentType(application/json; charsetutf-8);response.getWriter().print(JSONObject.toJSONString(R.error(401,请先登录)));returnfalse;}5.3 字典表初始化监听器DictionaryServletContextListenerWebListenerpublicclassDictionaryServletContextListenerimplementsServletContextListener{OverridepublicvoidcontextInitialized(ServletContextEventsce){ApplicationContextappContextWebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());DictionaryServicedictionaryServiceappContext.getBean(DictionaryService.class);ListDictionaryEntitylistdictionaryService.selectList(newEntityWrapper());MapString,MapInteger,StringdictMapnewHashMap();for(DictionaryEntityd:list){MapInteger,StringmdictMap.getOrDefault(d.getDicCode(),newHashMap());m.put(d.getCodeIndex(),d.getIndexName());dictMap.put(d.getDicCode(),m);}sce.getServletContext().setAttribute(dictionaryMap,dictMap);}}6. 部分截图7. 项目总结校园商铺管理系统实现了多角色在线交易的基本功能涵盖了商品管理、订单流转、购物车、个人中心等核心电商模块。系统采用前后端分离的架构后台管理使用VueElement前台使用LayUI后端基于Spring Boot Mybatis-Plus通过自定义Token实现接口安全。数据库设计较为规范利用字典表动态管理各类枚举值提高了扩展性。项目还集成了百度地图API用于地址定位、百度AI人脸比对预留等扩展功能。整体代码结构清晰功能完整适合作为校园实训或小型电商系统的参考实现。