项目中的一些比较好的设计
下边是我总结的一些项目中比较好的设计,欢迎大家交流!
1. 账务系统的技巧
- 账务处理:执行超过《最大交易执行时间》后直接异常回滚,退出
- 转账操作:先判断账户ID大小,每次先锁小的,降低死锁概率
2. 业务系统的技巧
- 对交易流程的抽象:
- 抽象出公共流程,主流程:prepareTrans()和excute()两步
- prepareTrans():onBefore()和save()分别做前置校验和入库
- excute():beforeTarns()、doExcute()、afterTrans()分别前置更新、账务处理、后置更新
- 在主流程方法中,根据交易类型字段回调特殊业务的相关处理
- 抽象出公共流程,主流程:prepareTrans()和excute()两步
- 表结构设计 合单表、业务订单表、交易订单表(和核心账务一一对应)、交易订单明细表、支付消费表(和支付订单一一对应)、支付消费扩展表
- 异常处理及补偿机制
- 定时查询8小时——>30分钟前的交易,调用对应的补单代码
- 直接查询和账务相关的交易订单、支付订单表,通过对应交易码回调特殊业务的校验、更新业务订单表等
- 统一用异常而不是错误码,控制流程。代码更加清晰
- 真正的业务流程组合服务记录完整的订单、支付相关表,其它前置及后置服务只做校验、报文转换动作,不记表
- 拆出独立前置服务做平台准入、基本校验、接口及业务类型的权限控制