1.背景
为了更全面的说明DDD领域驱动设计相关的知识和技巧,先采用一个案例,通过案例分析,从领域建模,到系统编码,完整的走一遍领域驱动设计流程。
本例所采用的案例为电商业务中的售后补偿系统。基于DDD的模式,实现售后补偿功能的设计和开发。
售后补偿:用户下单收到商品后,发现商品存在如包装,外观,质量等方面的瑕疵,通过补偿申请界面,向电商平台申请补偿的一种业务。常见补偿方案如补发红包,代金卷,金币,退款,重新补发问题商品等。售后补偿简易流程如下:
特别申明:本文所讲案例为实际某平台的售后补偿系统,基于DDD模式重构后,已经发布上线。采用DDD领域驱动设计,对比历史系统,在系统设计,代码规范性,代码质量,代码理解度方面均有本质的提升。本案例讲解做了脱敏处理,简化部分功能(实际售后补偿业务偏复杂),详情参看以下的需求说明文档。
2.售后补偿需求说明
售后补偿业务简易流程如下:
- 选择补偿方案,生成售后补偿单;
- 补偿单审批;
- 补偿单履约处理;
- 履约单处理完成,补偿单完结;
补偿申请一共存在三个入口:
- 客服人员后台发起售后补偿申请;
- 用户基于app发起售后补偿申请;
- 线下订单,特殊补偿申请;
三种申请方式入口不同,客户端传入的参数不同,但发起信息均包括以下两部分:
- 基础信息:补偿单的基础信息;
- 补偿方案信息:补偿单到底用哪一种补偿方案补偿,如退款,红包。
2.1 补偿基础信息
栏目
|
说明
|
基础信息
|
字段包括:操作人编码,订单号,补偿原因,责任归属(公司原因,供应商原因,物流原因),描述,附件,补偿方式(红包,退款,代金券,补发),补偿属性(商品,非商品),理论补偿金额,实际补偿金额。其他非关键字段。
|
校验
|
|
业务处理
|
|
数据存储
|
记录补偿单基础信息到相关的数据表。
|
2.2 补偿方案
补偿方案
|
栏目
|
说明
|
商品退款
|
基础字段
|
字段包括:实际补偿值,商品编码,商品数量,商品理论补偿值。
|
触发条件
|
|
|
校验
|
|
|
业务处理
|
汇总明细中的商品补偿金额,记录到补偿单基础信息中。补偿单基础信息的理论金额,实际补偿金额为商品明细中合计数据。
|
|
数据存储
|
记录补偿策略信息到相关数据表中。
|
|
非商品
其他补偿
|
基础字段
|
字段包括:实际补偿值,理论补偿值。
|
触发条件
|
|
|
校验
|
|
|
数据存储
|
记录补偿策略信息到相关数据表中。
|
|
补发补偿
|
基础字段
|
补偿商品编码,发货仓库编码,补偿数量
|
触发条件
|
|
|
校验
|
|
|
业务处理
|
|
|
数据存储
|
记录补偿策略信息到相关数据表中。
|
2.3 补偿单审批
- 自动审批:申请人员类型为后台管理人员时,自动审批通过。
- 手动审批:申请人员类型为电商平台用户时,需相关的管理人员手动审批后,才能继续走流程处理。
2.4 补偿单其他信息完善
- 补传补偿图片信息:在补偿单处理过程中,系统支持用户重新录入补传图片信息。
- 填写备注信息:在补偿单处理过程中,支持相关的操作人员填写备注信息。
- 补偿单终止:在补偿单未发起处理或处理失败时,支持终止补偿单,作废该笔补偿申请信息。
- 重新发起补偿:补偿履约处理失败后,再次发起处理;
2.5 售后补偿履约处理
- 补发处理:补偿策略为补发补偿时,重新补发商品,调用订单中心接口,创建一个新的订单。补发处理不能马上获取补发的订单是否已经出库了,需异步等待订单系统回复信息。
- 商品退款处理:补偿模式为商品原因并退款时,调用退款系统,申请退款。退款是一个异步过程,需等待退款系统回复信息。
- 商品其他模式退款处理:如红包,代金券等直接调用用户中心接口请求处理,能同步得到系统的处理结果。