本文档提供了mall电商平台订单处理系统的详细技术概述。它涵盖了从创建到支付处理再到完成或取消的完整订单生命周期。本文档侧重于处理面向客户的订单操作的mall-portal模块的实现。
相关功能请参阅购物车进行购物车管理,以及会员服务进行用户认证和个人资料管理。
来源:mall-portal/src/main/java/com/macro/mall/portal/service/OmsPortalOrderService.java1-76
系统中的订单会经历几个定义好的状态
系统中定义的订单状态码为:
支付方式定义为:
来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java197-198 mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java193-194
订单处理系统围绕以下关键组件构建:
OmsPortalOrderController - 提供订单操作的RESTful端点OmsPortalOrderServiceImpl - 实现订单业务逻辑OmsCartItemService、OmsPromotionService、UmsMemberService - 提供购物车、促销和用户功能PortalOrderDao、Mapper接口 - 处理数据库操作CancelOrderSender - 发送延迟消息以实现自动订单取消来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java36-69
在创建订单之前,系统会生成订单确认信息,向客户展示他们将要购买的商品。
确认流程:
来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java71-93 mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java32-38
当用户确认订单时,系统会处理订单创建。
订单生成期间的关键操作:
来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java95-252 mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java40-46
订单创建后,系统会处理支付。
支付处理步骤:
来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java254-283 mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java48-54
订单可以由用户手动取消,或因支付超时而自动取消。
取消流程:
来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java314-348 mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java92-98
系统采用两阶段库存管理策略。
库存操作分为三个阶段:
lock_stock,而不更改stock。lock_stock和stock。lock_stock,而不更改stock。来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java750-759 mall-portal/src/main/resources/dao/PortalOrderDao.xml91-113
该系统支持多种影响订单定价的促销类型。
促销计算过程:
CartPromotionItem对象中来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPromotionServiceImpl.java28-110
系统实现了自动订单取消机制。
实现细节
OmsOrderSetting.normalOrderOvertime计算超时时间。来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java350-357 mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java285-312
系统生成独特的18位订单号,格式如下:
yyyyMMdd + source type (2 digits) + payment type (2 digits) + incremental sequence (6+ digits)
实现
database:orderId{date}来源:mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java462-477
| 端点 | 方法 | 描述 |
|---|---|---|
| /order/generateConfirmOrder | POST | 生成订单确认信息 |
| /order/generateOrder | POST | 创建新订单 |
| /order/paySuccess | POST | 处理支付成功回调 |
| /order/cancelOrder | POST | 调度订单取消 |
| /order/cancelUserOrder | POST | 立即取消订单 |
| /order/list | GET | 列表显示用户订单(带分页) |
| /order/detail/{orderId} | GET | 获取详细订单信息 |
| /order/confirmReceiveOrder | POST | 确认收货 |
| /order/deleteOrder | POST | 软删除订单 |
来源: mall-portal/src/main/java/com/macro/mall/portal/controller/OmsPortalOrderController.java32-114
订单处理中使用的主要数据模型
| 模型 | 描述 |
|---|---|
| OrderParam | 创建订单的输入参数 |
| ConfirmOrderResult | 前端显示的订单确认数据 |
| OmsOrder | 订单主信息数据库实体 |
| OmsOrderItem | 订单项数据库实体 |
| CartPromotionItem | 包含促销信息的购物车项 |
| OmsOrderDetail | 包含订单项的详细订单视图 |
来源: mall-portal/src/main/java/com/macro/mall/portal/domain/OrderParam.java1-26 mall-portal/src/main/java/com/macro/mall/portal/domain/CartPromotionItem.java1-27