mall 电商系统功能完成进度与技术实现解析:从框架搭建到前后台功能全景
2026/9/18 7:34:48 网站建设 项目流程

mall 电商系统功能完成进度与技术实现解析:从框架搭建到前后台功能全景

【免费下载链接】mallmall项目是一套电商系统,包括前台商城系统及后台管理系统,基于Spring Boot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。项目地址: https://gitcode.com/macrozheng/mall

mall 项目是一套基于 Spring Boot 3 + MyBatis 实现的电商系统,包含前台商城系统与后台管理系统,支持 Docker 容器化部署。dev_flow.md 是该项目的功能完成进度清单文档,记录了从框架搭建到后台、前台各业务模块的实现情况。本文以该文档为骨架,结合仓库源码逐一剖析每项已完成功能背后的技术实现,帮助读者系统理解 mall 项目的模块划分、核心代码位置与调用关系,可作为学习电商系统开发或二次开发的路线图参考。

一、文档定位:一张项目功能完成度总览图

dev_flow.md用"功能清单 + 完成标记(✔)"的形式,将 mall 项目的能力划分为三大板块:

  1. 框架搭建:36 项基础设施能力(MyBatis、SpringSecurity、Swagger、Docker 等),唯一标记"未完成"的是"集成 SpringCloud";
  2. 后台功能:登录、商品、促销、内容、用户、订单、权限管理七大模块的细化功能点;
  3. 前台功能:商品搜索、购物流程、会员模块(关注/收藏/足迹/登录注册)。

其中框架搭建清单与实际仓库结构高度吻合——根 pom.xml 聚合了 7 个模块:mall-common(通用工具与封装)、mall-mbg(MyBatis 生成器模块)、mall-security(安全与 JWT)、mall-demo(演示模块)、mall-admin(后台管理)、mall-search(搜索服务)、mall-portal(前台商城)。这套"通用 + 生成器 + 安全 + 业务"的分层思想,正是电商系统可维护性的基础。

二、框架搭建层:36 项基础设施的落地方式

1. ORM 与代码生成:MyBatis + MyBatisGenerator

文档标记"集成 MyBatis ✔"与"集成 MyBatisGenerator ✔",仓库中对应:

  • MyBatis 集成:根pom.xml中声明了mybatis-spring-boot-starter(3.0.4)、pagehelper-spring-boot-starter(2.1.1,分页插件)与druid-spring-boot-3-starter(1.2.24,连接池)依赖;各业务模块另有 MyBatisConfig.java 配置 Mapper 扫描与分页拦截器。
  • 代码生成:MBG 配置类位于 Generator.java,它读取/generatorConfig.xml配置,通过MyBatisGenerator.generate()批量生成 Mapper 接口、Model 与 Example 查询类。mall-mbg模块下mapper/model/目录中约 80 个 Mapper 与 40 余个 Model(如UmsAdminPmsProductOmsOrder)均为生成产物,这解释了为何整个仓库的持久层代码风格高度统一。

2. 安全体系:SpringSecurity + JWT + Restful 改造

文档中"SpringSecurity 登录改为 Restful 形式 ✔""JWT 登录、注册、获取 token ✔""SpringSecurity 权限管理功能 ✔"三项,在mall-security模块中成套实现:

  • SecurityConfig.java 定义了SecurityFilterChain:通过IgnoreUrlsConfig放行白名单 URL、放行 OPTIONS 跨域预检、关闭 CSRF、采用STATELESS无状态会话,并注册 JWT 过滤器JwtAuthenticationTokenFilter
  • JwtTokenUtil.java 基于 Hutool 的JWTUtil生成/校验 token,支持validateTokenrefreshHeadToken(30 分钟内刷新返回原 token 的防抖策略);
  • 权限管理由DynamicAuthorizationManagerDynamicSecurityMetadataSourceDynamicSecurityService三个组件构成动态授权链,支持按 URL 资源做细粒度鉴权。

JWT 配置项集中在 application.yml:

jwt: secret: mall-admin-secret #JWT加解密使用的密钥 expiration: 604800 #JWT的超期限时间(60*60*24*7) tokenHead: 'Bearer ' #JWT负载中拿到开头

expiration: 604800即 7 天有效期,tokenHead用于区分"Bearer "前缀与 token 本体。

3. 通用能力:返回值封装、参数校验、日志与 AOP

  • CommonResult 统一返回:CommonResult.java 提供successfailedvalidateFailedunauthorizedforbidden等静态工厂方法,配合 CommonPage.java 的restPage完成分页结果包装,所有 Controller 均以此返回 JSON。
  • 参数校验:文档标记"集成 Hibernator-Validator ✔"与"SpringAOP 通用验证失败结果返回 ✔"。项目中自定义了 FlagValidator.java 注解及实现类 FlagValidatorClass.java,用于校验状态值是否落在指定范围内(如@FlagValidator(value = {"0","1"})),验证失败统一走GlobalExceptionHandler返回CommonResult.validateFailed
  • 日志与 AOP:WebLogAspect.java 用@Around切面拦截com.macro.mall.*.controller.*的所有公开方法,记录 URL、Method、参数、耗时、接口描述(取自 Swagger 注解@Operation),并通过 logstash-logback-encoder 的Markers写入 Elasticsearch,与文档中"ELK 日志收集功能 ✔""SpringAOP 通用日志处理 ✔"对应。

4. 中间件与部署能力

文档功能项仓库依据
Docker 容器化部署 ✔document/docker/docker-compose-env.yml 编排 MySQL/Redis/ES/RabbitMQ 等环境;document/docker/docker-compose-app.yml 编排应用容器;根pom.xml配置了 fabric8docker-maven-plugin,基础镜像openjdk:17
配置区分生产和测试环境 ✔各业务模块resources下存在application.ymlapplication-dev.ymlapplication-prod.yml三套配置
ELK 日志收集 ✔document/elk/logstash.conf 定义日志管道;WebLogAspect输出 logstash 格式日志
RabbitMQ 异步通信 ✔RabbitMqConfig.java 与队列枚举 QueueEnum.java,用于订单超时取消
Elasticsearch 搜索 ✔mall-search模块提供 EsProductController.java 与 EsProductService.java
OSS 上传 ✔OssController.java 与 OssServiceImpl.java
定时任务 ✔SpringTaskConfig.java 配合 OrderTimeOutCancelTask.java
集成单元测试 ✔pom.xml引入spring-boot-starter-test;测试用例见 PmsDaoTests.java(含@SpringBootTest@Transactional+@Rollback的批量插入回滚测试)

此外,SpringCloud是清单中唯一未勾选项,说明 mall 当前以单体/模块化架构为主,未引入微服务治理组件——这也是文档明确标注的边界。

三、后台功能实现:七大模块的功能点与源码印证

1. 后台登录功能

文档列出的三项能力(注册、登录获取 token、刷新 token)全部集中在 UmsAdminController.java 中,路由前缀为/admin

  • POST /admin/register:接收UmsAdminParam,调用adminService.register()
  • POST /admin/login:接收用户名密码,成功后返回{token, tokenHead}结构,配合前端在请求头携带Authorization: Bearer <token>
  • GET /admin/refreshToken:从请求头读取旧 token 并刷新,过期则返回"token 已经过期!"。

其内部安全链路为:JwtAuthenticationTokenFilter从请求头提取 token →JwtTokenUtil.validateToken校验签名与有效期 → 将AdminUserDetails(AdminUserDetails.java)写入 SecurityContext,实现无状态认证。

2. 商品管理

商品管理是后台最复杂的模块,文档按"分类 → 品牌 → 属性 → 商品增改查 → 回收"逐层拆解,对应的源码分层清晰:

  • 控制器:PmsProductController.java 提供POST /product/createGET /product/updateInfo/{id}POST /product/update/{id}GET /product/list,以及批量审核update/verifyStatus、上下架update/publishStatus、推荐update/recommendStatus、设新品update/newStatus等操作——与文档中"批量操作:上下架、推荐、新品、转移分类、放入回收站、审核"一一对应;
  • DTO 层:PmsProductParam.java 聚合了商品全量数据,其中List<PmsMemberPrice>(会员价格)、List<PmsProductLadder>(阶梯价格)、List<PmsProductFullReduction>(满减价格)、List<PmsSkuStock>(SKU 库存)、List<PmsProductAttributeValue>(属性/参数值)、List<CmsSubjectProductRelation>(关联专题)、List<CmsPrefrenceAreaProductRelation>(关联优选)等字段,正是文档"添加商品"一节列出的全部参数;PmsProductQueryParam.java 对应分页查询的过滤条件(publishStatusverifyStatusproductSnproductCategoryIdbrandIdkeyword等);
  • 持久层mall-mbgPms*Mapper负责单表 CRUD,PmsProductDao.java 与 PmsProductVertifyRecordDao.java 等 DAO 通过自定义 SQL 完成商品聚合查询、审核记录与操作日志,返回 PmsProductResult.java(含商品基本信息、促销信息、属性信息、关联信息,对应文档"修改商品"的查询四类信息)。

文档还特别注明"商品属性分类及规格不可修改"与"可修改"两种场景的差异:前者只支持单个 SKU 的增删改,后者修改后需同时展示原 SKU 库存与属性分类——该规则在PmsProductServiceImpl.update()中通过区分productAttributeCategoryId是否变更来实现。

3. 促销管理

促销模块覆盖秒杀、优惠券、活动与首页推荐四类,源码分布在mall-adminSms*系列类中:

  • 秒杀:SmsFlashPromotionController.java(活动上下线)、SmsFlashPromotionSessionController.java(场次管理)、SmsFlashPromotionProductRelationController.java(设置活动商品),秒杀场次详情由 SmsFlashPromotionSessionDetail.java 承载;
  • 优惠券:SmsCouponController.java 与 SmsCouponHistoryController.java 分别对应"添加/编辑/删除优惠券"与"查看领取记录";
  • 首页推荐:SmsHomeBrandController.java(品牌推荐)、SmsHomeNewProductController.java(新鲜好物)、SmsHomeRecommendProductController.java(人气推荐)、SmsHomeRecommendSubjectController.java(专题精选)、SmsHomeAdvertiseController.java(广告管理),每类均提供"列表展示、是否推荐/上线、排序、删除、多选加入"接口。

4. 内容管理

内容管理围绕专题、优选主题、话题、帮助四个子模块展开,对应Cms*系列:

  • 专题:CmsSubjectController.java;
  • 优选主题:CmsPrefrenceAreaController.java;
  • 专题/话题关联商品关系通过 CmsSubjectProductRelationDao.java 与 CmsPrefrenceAreaProductRelationDao.java 维护,对应文档"添加、删除关联商品"功能。

5. 用户管理

  • 后台用户:列表、账号启用、编辑、删除、分配角色由 UmsAdminController.java(/admin/list/admin/updateStatus/{id}/admin/role/update/admin/role/{adminId})提供;会员等级管理在 UmsMemberLevelController.java;
  • 成长值与积分UmsGrowthChangeHistoryUmsIntegrationChangeHistoryUmsIntegrationConsumeSetting等模型与UmsMemberStatisticsInfo统计模型位于 mall-mbg 的 model 目录,对应文档"成长值及积分明细、任务奖励设置、更多规则设置";会员标签由UmsMemberTagMapperUmsMemberMemberTagRelationMapper支撑。

6. 订单管理

订单模块由Oms*系列实现,是前后台衔接的核心:

  • 订单列表与搜索:OmsOrderController.java 配合 OmsOrderQueryParam.java(订单编号、收货人、订单状态、订单分类、订单来源、提交时间等过滤条件)与 OmsOrderDao.java 的自定义分页 SQL;
  • 订单详情与操作:OmsOrderDetail.java 聚合订单、订单项、操作记录,支持修改收货人(OmsReceiverInfoParam.java)、修改费用(OmsMoneyInfoParam.java)、发货(OmsOrderDeliveryParam.java)等操作;
  • 订单设置:OmsOrderSettingController.java 管理文档列出的五项超时时间(秒杀订单超时、正常订单超时、自动完成、自动结束交易、自动好评);
  • 退货:OmsOrderReturnApplyController.java(服务单搜索、确认/拒绝退货、确认收货,查询条件见 OmsReturnApplyQueryParam.java)与 OmsOrderReturnReasonController.java(退货原因 CRUD)。

7. 权限管理(RBAC)

文档给出的角色-菜单矩阵(管理员/运营/财务/美工/客服)在Ums*权限模型中落地:

  • 权限表UmsPermissionUmsRoleUmsResourceUmsMenu及四张关系表(UmsRoleMenuRelationUmsRolePermissionRelationUmsRoleResourceRelationUmsAdminRoleRelation)构成 RBAC 数据模型,全部位于 mall-mbg model 目录;
  • 控制器:UmsRoleController.java(角色 CRUD、分配/获取角色权限)、UmsResourceController.java(资源权限管理)、UmsMenuController.java(菜单管理);
  • 菜单树:UmsMenuNode.java 与UmsMenuServiceImpl实现菜单的树形返回;UmsAdminServiceImpl通过getRoleListupdateRole完成"为成员分配角色"。

四、前台功能实现:搜索、购物流程与会员模块

1. 商品搜索(Elasticsearch)

mall-search模块实现文档中的综合搜索:

  • 数据同步:EsProductDao.java 从 MySQL 聚合商品、品牌、分类数据导入 ES,文档中"从数据库中查询相关数据并导入 es"即指此处;EsProductRepository基于 Spring Data Elasticsearch 提供插入/修改/删除接口;
  • 检索与聚合:EsProductServiceImpl.java 实现关键词搜索、按新品/销量/价格排序,以及文档所述的"未选择分类时按出现次数最多分类聚合筛选";EsProductRelatedInfo.java 封装按品牌、分类、属性聚合的筛选结果;
  • 搜索联想与热搜:基于用户搜索记录聚合生成热搜词,接口见 EsProductController.java。

2. 购物流程(购物车 → 确认单 → 订单)

  • 购物车:OmsCartItemController.java 提供加入购物车、列表(主图/名称/数量/规格)、修改数量、重选规格、删除五个接口,购物车数据由 OmsCartItemServiceImpl.java 操作 Redis 与数据库;
  • 确认单:OmsPortalOrderController.java 的generateConfirmOrder返回 ConfirmOrderResult.java(收货信息、商品信息、价格信息、发票信息、支付方式),并调用 OmsPromotionServiceImpl.java 完成促销计算(会员价格、阶梯价格、满减、优惠券、积分抵扣),购物车条目先转换为 CartPromotionItem.java;
  • 提交与支付POST /order/generateOrder将确认单转为订单、删除购物车相关商品、写入订单并锁定库存;支付对接支付宝,相关实现见 AlipayController.java、AlipayServiceImpl.java 与 AlipayConfig.java;
  • 超时取消:文档"订单超时后自动取消订单,解除库存锁定,返还优惠券积分"由 OrderTimeOutCancelTask.java 定时任务 + CancelOrderSender.java/CancelOrderReceiver.java 的 RabbitMQ 延迟队列协作完成。

3. 会员模块(我的)

  • 关注/收藏/足迹:分别由 MemberAttentionServiceImpl.java、MemberCollectionServiceImpl.java、MemberReadHistoryServiceImpl.java 实现,数据层使用 Spring Data MongoDB(见repository目录下的三个 Repository),其中足迹(浏览历史)持久化在 MongoDB 中;
  • 会员登录注册:UmsMemberController.java 提供注册(用户名/密码/手机号/验证码)、登录、获取验证码、忘记密码、登出接口,认证基于 https(文档注明"登录功能:https 登录"),会员信息与登录 token 由 UmsMemberServiceImpl.java 及 UmsMemberCacheServiceImpl.java 管理。

五、从进度清单到学习路线:如何使用本文档与源码对照

dev_flow.md的价值不仅在于记录完成度,更在于它天然是一份学习地图。建议读者按以下顺序对照阅读:

  1. 先看框架搭建表:每一项"✔"都能在根 pom.xml 或对应模块的config/目录找到依赖与配置,可据此建立技术栈全景;
  2. 再按后台模块逐项核对:每个功能点都能在mall-admincontroller/ → service/ → dao/ → mapper/调用链中定位到具体类,例如"商品分页查询"从 PmsProductController.java 的/product/list开始,经过PmsProductService.list()与 PageHelper 分页,最终落到PmsProductDao的自定义 SQL;
  3. 最后对比前台流程:购物流程串联了 MySQL、Redis、Elasticsearch、MongoDB、RabbitMQ 多种存储与中间件,是理解电商核心交易链路的最佳入口。

需要说明的是,本文基于当前仓库快照整理,清单中"集成 SpringCloud"尚未完成;dev_flow.md作为进度文档,随仓库演进会不断更新,具体接口签名与配置以源码为准。对于希望深入某个模块的读者,mall-admin/src/main/java/com/macro/mall/controller 下的 30 余个 Controller 与 mall-portal/src/main/java/com/macro/mall/portal/controller 下的 13 个 Controller 是最直接的接口索引。

【免费下载链接】mallmall项目是一套电商系统,包括前台商城系统及后台管理系统,基于Spring Boot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。项目地址: https://gitcode.com/macrozheng/mall

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询