网约车分布式账务处理方法、装置、电子设备及存储介质与流程

摘要: 本发明涉及网约车,具体涉及网约车分布式账务处理方法、装置、电子设备及存储介质。背景技术:1、随着平台型经济的快速发展,网约车行业已从单一的点对点出行服务,演变为...
网约车分布式账务处理方法、装置、电子设备及存储介质与流程

本发明涉及网约车,具体涉及网约车分布式账务处理方法、装置、电子设备及存储介质。

背景技术:

1、随着平台型经济的快速发展,网约车行业已从单一的点对点出行服务,演变为涵盖网约车、货运、代驾、顺风车等多业务线的综合出行服务平台。与此同时,网约车平台普遍采用软件即服务模式,为中小型出行企业提供标准化的调度、结算、账户管理等服务。在此模式下,平台需要支撑多租户、多主体、多场景以及高频次的资金结算与会计核算。因此,如何构建高效、可靠、可扩展的账务处理系统,已成为网约车saas(software as a service,软件即服务)平台的核心技术挑战之一。

2、针对网约车账务处理需求,相关技术常见的做法是将业务系统与账务模块分离,由业务系统完成清分计算后,将结果推送至独立的账务模块进行入账和余额更新,动账处理结果通过消息队列直接发送至下游系统。该方案在实际应用中存在以下问题:账务处理请求在高并发场景下易因网络重试等原因被重复处理;账务处理与后续的记账、通知等操作之间缺乏统一的事务管理,当其中某一环节失败时难以保证数据的一致性;此外,网约车服务中一笔业务往往涉及多个参与方,整体业务与各方明细账之间缺乏强制关联手段,难以实现从业务单据到各方明细的完整追溯。

3、因此,亟须一种网约车账务处理方法,以实现账务处理请求的防重复处理、账务数据的事务一致性和主子账务的关联追溯。

技术实现思路

1、本发明提供了网约车分布式账务处理方法、装置、电子设备及存储介质,以解决相关技术中存在的至少一个问题。

2、第一方面,本发明提供了网约车分布式账务处理方法,所述方法包括以下步骤:

3、响应于网约车账务处理请求,生成与所述网约车账务处理请求对应的全局唯一标识符,其中,所述网约车账务处理请求至少包括主体信息;

4、基于所述全局唯一标识符获取分布式锁,并在所述分布式锁获取成功后开启数据库事务,所述分布式锁用于防止同一所述网约车账务处理请求被重复处理;

5、在所述数据库事务中,根据所述网约车账务处理请求创建一个主动账凭证以及若干个子动账凭证,根据所述子动账凭证的类型处理所述主体信息对应的账户状态得到账务处理结果,并生成与所述账务处理结果对应的异步通知消息,其中,所述主动账凭证与各子动账凭证之间的关联关系依据所述全局唯一标识符建立;

6、提交所述数据库事务并释放所述分布式锁;

7、基于所述异步通知消息将所述账务处理结果推送至目标业务账户。

8、本发明通过生成全局唯一标识符并结合分布式锁,确保同一账务处理请求在整个分布式系统中只会被处理一次,避免了因网络重试或消息重复消费导致的重复入账问题;通过在同一数据库事务中完成主动账凭证创建、子动账凭证创建、账户状态更新和异步通知消息生成,保证了这些操作要么全部成功要么全部回滚,解决了动账处理与后续操作之间的数据一致性问题;通过依据全局唯一标识符建立主动账凭证与子动账凭证的关联关系,实现了从整体业务到各方明细的完整追溯。

9、在一种可选的实施方式中,所述主动账凭证用于记录所述网约车账务处理请求所对应业务的总金额和业务类型;所述子动账凭证用于记录所述网约车账务处理请求中各个主体的资金变动明细或虚拟价值变动明细。

10、本发明通过主动账凭证记录业务的总金额和业务类型,子动账凭证记录各个主体的资金变动或虚拟价值变动明细,使得一笔业务交易的整体信息与各参与方的明细信息在数据结构层面清晰分离,便于后续对账、审计和问题排查。

11、在一种可选的实施方式中,在创建与所述网约车账务处理请求对应的一个主动账凭证以及若干个子动账凭证之后,还包括:

12、依据所述全局唯一标识符,将所述主动账凭证以及若干个子动账凭证进行分表存储,以确保所述主动账凭证与各所述子动账凭证之间的关联关系。

13、本发明依据全局唯一标识符将主动账凭证和子动账凭证进行分表存储,在保证两者关联关系不丢失的前提下,将数据分散到不同的物理存储位置,减少了单表数据量,提高了大规模并发场景下的读写性能,同时避免了因单表过大导致的查询延迟问题。

14、结合第一方面或其对应的实施方式,在一种实施方式中,所述子动账凭证的类型至少包括信息流动账、托管资金动账和非托管资金动账,所述根据所述子动账凭证的类型更新账户状态,具体包括:

15、若所述子动账凭证的类型为所述信息流动账,则更新主体信息中的主体虚拟账户,并生成户头流水信息;

16、若所述子动账凭证的类型为所述托管资金动账,则发起真实资金转移请求,并在资金转移成功后通过回调接口再次获取所述分布式锁以处理资金转移结果,以防止资金转移成功后对回调接口的重复请求;

17、若所述子动账凭证的类型为所述非托管资金动账,则记录所述网约车账务处理请求对应的收款方银行信息,将所述收款方银行信息交由后台任务处理资金转移请求。

18、本发明将子动账凭证细分为信息流动账、托管资金动账和非托管资金动账三种类型,并针对每种类型分别定义处理方式,信息流动账仅更新虚拟户余额而不触发真实资金转移,避免了将虚拟收益误判为真实支付;托管资金动账通过回调接口再次获取分布式锁,防止了资金转移成功后回调请求被重复处理;非托管资金动账将收款方银行信息交由后台任务处理,避免了对实时转账的阻塞等待,三种类型的区分和处理共同实现了信息流与资金流的精准分离。

19、结合第一方面或其对应的实施方式,在一种实施方式中,所述信息流动账用于影响所述主体信息中所述主体虚拟账户的虚拟现金余额,不触发真实资金转移;所述托管资金动账用于托管账户之间的真实资金转移;所述非托管资金动账用于平台账户与外部银行账户或第三方支付账户之间的资金转移。

20、本发明进一步限定了三种动账类型的本质区别,信息流动账只影响虚拟现金余额,不涉及真实资金;托管资金动账发生在托管账户之间,由平台可控;非托管资金动账涉及外部银行或第三方支付账户,不可控因素更多。该限定使得在设计层面就能根据不同类型采取不同的容错策略。

21、在一种可选的实施方式中,所述网约车账务处理请求还包括业务类型和业务事件类型;在所述根据所述子动账凭证的类型更新账户状态得到账务处理结果之后,还包括:

22、根据所述业务类型、所述业务事件类型及所述主体信息查找记账场景配置,生成与所述记账场景配置相匹配的复式记账条目,并将所述复式记账条目写入记账凭证表。

23、本发明查找对应的记账场景配置并生成复式记账条目,实现了从业务事件到会计凭证的映射,无需人工维护业务场景与会计科目之间的映射关系,避免了因人工配置错误导致的账实不符问题。

24、结合第一方面或其对应的实施方式,在一种实施方式中,所述生成与所述记账场景配置相匹配的复式记账条目,具体包括:

25、根据记账场景配置确定借方科目和贷方科目,以及所述借方科目与所述贷方科目之间的借贷金额。

26、本发明根据记账场景配置自动确定借方科目和贷方科目以及借贷金额,保证了每一笔账务处理都能自动生成符合会计准则的借贷分录,避免了传统方案中因手工录入或配置错误导致的借贷不平问题。

27、第二方面,本发明提供了网约车分布式账务处理装置,所述装置包括:

28、请求响应模块,用于响应于网约车账务处理请求,生成与所述网约车账务处理请求对应的全局唯一标识符,其中,所述网约车账务处理请求至少包括主体信息;

29、事务开启模块,用于基于所述全局唯一标识符获取分布式锁,并在所述分布式锁获取成功后开启数据库事务,所述分布式锁用于防止同一所述网约车账务处理请求被重复处理;

30、事务处理模块,用于在所述数据库事务中,根据所述网约车账务处理请求创建一个主动账凭证以及若干个子动账凭证,根据所述子动账凭证的类型处理所述主体信息对应的账户状态得到账务处理结果,并生成与所述账务处理结果对应的异步通知消息,其中,所述主动账凭证与各子动账凭证之间的关联关系依据所述全局唯一标识符建立;

31、事务提交模块,用于提交所述数据库事务并释放所述分布式锁;

32、消息推送模块,用于基于所述异步通知消息将所述账务处理结果推送至目标业务账户。

33、第三方面,本发明提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的网约车分布式账务处理方法。

34、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的网约车分布式账务处理方法。

35、第五方面,本发明提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的网约车分布式账务处理方法。