针对订单系统领域划分
核心域:下单、支付
通用域:用户管理、支付路由、红包、优惠券
支撑域:履约(运营服务、供应链发货)、售后(开发票、退款、结算、收入)
(1)订单DDD
(2)事务一致性 TCC
(3)状态管理:状态机
由于订单系统属于交易系统的中间枢纽环节,所有业务逻辑会比较复杂,调用方比较多。
├── interface ## 用户接口层
│ └── assembler
│ ├── dto
│ ├── facade
├── application ## 应用层
│ └── event
│ │ └── publish
│ │ └── subscribe
│ ├── service
├── domain ## 领域层
│ └── aggregate1
│ │ └── entity
│ │ └── event
│ │ └── repository
│ │ └── service
│ ├── aggregate2
├── infrastructure ## 基础层
│ └── api
│ └── driver
│ └── eventbus
│ └── mq
事务一致性实现 -
[[Seate]]
[[rocketmq事务一致性]]
订单状态:订单子状态(订单主状态、货物状态、交易状态)
要点一:分清主次
订单状态:订单主状态、子状态(货物状态、交易状态)
主表子表:订单主表、子表
查询接口:精粒度接口(状态查询)、中精度接口(基本信息查询)、细精度接口(外部查询)
消息通知:胖消息(瘦消息+查询)、瘦消息
复杂查询增加查询域:不过违背了(单一职责原则)
要点二:是否拆单?视情况而定
1、京东拆单:京东建设了拆单服务以仓库维度进行拆单
2、拆弹增加了支付的复杂度(需要多单合并支付)
要点三:退款场景支付
红包、优惠券均摊到sku上(使用银行家四舍五入算法拆分)
如何系统地理解「交易平台」?
外贸软件的建立包括以下步骤:
1.制定外贸系统需求:对外贸系统进行详细的功能需求分析,明确系统的业务流程、软件的功能模块和具体的需求,并与客户进行确认;
2.系统设计:结合外贸系统的需求,系统根据外贸业务特点,设计合理的数据库表结构,以及模块设计,确定系统的功能模块,实现外贸系统的相关业务;
3.系统开发:根据设计的功能模块,使用相应的开发工具和技术,进行外贸系统的开发,实现系统运行的功能;
4.系统测试:系统开发完成后,对外贸系统的功能进行测试,确定功能实现的正确性和可靠性;
5.系统部署:将开发完成的系统发布到客户的系统环境中,进行系统的部署,并实施相关的使用培训;
6.系统维护:定期对外贸系统进行维护和升级,确保系统可靠稳定运行。