菜单

门户模块 (mall-portal)

相关源文件

门户模块 (mall-portal) 是 Mall 电子商务系统的面向客户的前端 API。它提供了终端客户浏览产品、注册账户、管理购物车、下订单以及与电子商务平台交互所需的所有功能。该模块的设计重点是性能、安全性和无缝的用户体验。

1. 模块概述

mall-portal 模块是一个独立的 Spring Boot 应用程序,它与其他 Mall 电子商务系统中的模块协同工作。它实现的 REST API 由面向客户的 Web 和移动应用程序使用。

来源

2. 主要组件

门户模块围绕几个关键功能领域进行组织

来源

3. 会员管理

3.1 注册和认证

门户模块通过 Spring Security 集成和 JWT(JSON Web Token)进行身份验证,实现了完整的用户管理系统。

来源

会员服务提供以下主要功能

  1. 注册:用户可以使用用户名、密码、电话和验证码进行注册
  2. 认证:使用用户名和密码登录以获取 JWT 令牌
  3. 密码管理:使用验证码重置密码
  4. 会话管理:令牌刷新以延长用户会话
  5. 个人资料访问:检索当前用户详细信息

安全性通过 Spring Security 和 JWT 令牌实现无状态身份验证。安全配置包括不需要身份验证即可公开访问的白名单路径。

来源

4. 购物车和促销

4.1 促销计算

促销服务实现了各种折扣策略,可应用于购物车中的产品

促销类型描述实现
单品促销对单个产品的折扣直接应用于产品价格
数量折扣根据购买数量滑动的折扣使用 PmsProductLadder 确定折扣百分比
满减“满 X 减 Y”促销使用 PmsProductFullReduction 计算折扣金额

促销计算流程

来源

5. 订单处理

5.1 订单生成流程

订单处理系统是门户模块中最复杂的组件之一,负责处理从创建到完成或取消的订单的整个生命周期。

来源

5.2 订单状态管理

系统中的订单会经历各种状态,每种状态都有特定的转换和业务规则

状态码描述可能的转换
0待付款→ 1(付款成功),→ 4(已取消)
1待发货→ 2(已发货)
2已发货→ 3(已完成)
3已完成(终止状态)
4已取消(终止状态)
5无效订单(终止状态)

来源

5.3 自动订单取消

该系统实现了一个自动订单取消机制,用于取消在指定超时时间内仍未付款的订单

来源

6. 库存管理

门户模块实现了一个强大的库存管理系统,以防止超卖并保持准确的库存水平

  1. 库存验证:在订单创建之前,系统会验证可用库存
  2. 两阶段库存管理:
    • 锁定库存:在订单创建期间,库存被锁定但未减少
    • 减少库存:付款后,锁定的库存会转换为实际减少

来源

7. 配置

7.1 环境配置

门户模块支持通过 Spring profiles 进行不同的环境配置

环境配置文件描述
开发dev本地开发环境,使用 localhost 服务
生产prod生产部署,使用容器化服务

关键配置类别

  1. 数据库连接:MySQL、MongoDB、Redis
  2. 消息队列:RabbitMQ 设置,用于异步操作
  3. JWT 认证:令牌设置和安全路径
  4. Redis 缓存:不同数据类型的键和过期时间
  5. 支付集成:支付宝配置(测试/生产)

来源

7.2 安全配置

安全配置定义了哪些 API 路径需要身份验证,哪些可以公开访问

Whitelisted paths (no authentication required):
- /swagger-ui/
- /swagger-resources/**
- /**/v2/api-docs
- /**/*.html, *.js, *.css, *.png, *.map
- /favicon.ico
- /druid/**
- /actuator/**
- /sso/**
- /home/**
- /product/**
- /brand/**
- /alipay/**

JWT 令牌配置包括

  • 令牌头:“Authorization”
  • 令牌前缀:“Bearer ”
  • 令牌过期时间:604800 秒(7 天)
  • 密钥:“mall-portal-secret”

来源

8. 集成点

门户模块与多个外部服务和共享组件集成

  1. Redis:用于缓存身份验证码、会员信息和订单 ID
  2. MongoDB:用于存储文档数据和会员相关信息
  3. RabbitMQ:通过延迟消息处理异步订单取消
  4. 支付宝:用于支付处理和回调
  5. mall-security:用于 JWT 身份验证和安全配置
  6. mall-common:用于共享实用工具和 API 结果处理

该模块设计为独立部署的服务,可以独立于管理模块进行扩展,为面向客户的应用程序提供专用 API。

来源