交警罚没系统数据一致性问题

交警罚没系统,基本流程为银行收款、财政记账、交警解锁。

 

 

其网络结构为:

 

(网络结构示意图)

   银行方面要求一分钟内必须有返回结果。和交警是通过安全边界进行信息交换。财政居中,财政系统要确保财政记账和解锁的数据一致性。

   因为到交警解锁通过安全边界和交警六合一平台通讯有一定延迟,为提高对银行端的响应速度,我们采取异步解锁的方式,即财政收到银行端请求的情况下,先记账,同时在财政端写入一条需要发起请求的记录日志,记账与写日志在一个事物当中。记账成功即给银行返回成功消息。

    另外一个工作线程,读取财政端日志,根据财政端日志,写入安全边界的请求表,在安全边界上,建立一个交警端日志,记录发起请求的信息,写请求表和写交警端日志在一个事物中完成。每次根据财政端日志写请求表前,先检查交警端日志,如果没有写过请求表,再写入这2个表。这个动作完成后,再删除或者更新财政端的日志记录。

至于返回结果保持数据一致性的问题,后面再更新吧

ps:如果采取电子渠道,缴罚款交易的时候,我们检查的内容包括如下内容:

检查处罚决定书编号是否为空

检查处罚决定书编号长度是否符合规则(默认15位长度)

判断是否是本地交警处理:

      方法:检查所属区划:从财政库当中,提取银行字典表所属区划编码;在交警库当中,根据区划编码查询交警处罚决定书号                   段(前6位或者8位)

取得区划id:   根据银行传过来的银行编码 从银行、交警、区划的字典对照表(account_unit),中查询区划信息,(好像没啥控制性作用)

检查支付标志,支付标志用于区分是柜面支付还是电子渠道支付

检查收款日期

检查收款标志(是否测试)

根据银行代码查询对应的区划,根据区划查询业务年度

查询的字符串格式:查询类型+处罚决定书号+柜员+区划编码

解锁的字符串格式

 

 

 

 

 

 

 

阅读更多 登录后自动展开

更多精彩内容