交易流水处理设计
数据表设计
交易流水日志表 tran_seq_log
字段 | 描述 | 备注 |
---|---|---|
tran_seq_no | 本系统交易流水号 | 主键 |
channel_seq_no | 上游渠道交易流水号 | channel_seq_no、channel_code、tran_code三者构造唯一索引 |
channel_code | 渠道编码 | |
tran_code | 本系统提供的交易编码 | |
create_time | 交易流水创建时间 | |
update_time | 交易处理后更新时间 | |
status_code | 交易状态码 | 00-成功,01-失败,99-处理中 |
response_code | 响应码 | |
response_msg | 响应描述 |
流程设计
其他
- 事务A和事务C都可以在拦截器中实现,也可以在AOP中实现,这样所有的业务逻辑代码都可以被交易流水进行控制
- 交易流水日志表在服务运行一段时间后会变得臃肿,因此需要清理。设计一个交易流水日志历史表,并且设计一个定时任务每天扫描,将一个月或者几个月前的交易流水日志迁移到历史表中。如果交易量很大,也可以迁移几天前的数据。另外,交易流水日志历史表并不需要主键或者索引。