掌桥专利:专业的专利平台
掌桥专利
首页

转账方法、装置、存储介质及设备

文献发布时间:2023-06-19 11:29:13


转账方法、装置、存储介质及设备

技术领域

本发明涉及计算机技术领域,具体地涉及一种转账方法、装置、存储介质及设备。

背景技术

在现有的虚拟币系统的转账过程中,将账户A出款账户B入款的流程,都是作为一个流程事务来完成出入款操作。现有技术中的转账操作明显存在两个缺点:一个缺点是性能降低,出入款操作将出款操作和入款操作作为一个事务执行,账户A出款后,在账户B入款的时候,账户A要等待账户B入款结束后才能执行其它操作,导致系统吞吐量降低;另一个缺点是,假如现在存在两个转账请求,其中一个转账请求为账户A出款账户B入款,另一个转账请求为退款请求,是账户B出款,账户A入款,如果此刻两个转账请求分别在两个事务中,则可能导致死锁问题。

发明内容

本发明实施例的目的是提供一种转账方法、装置、存储介质及设备,解决了现有技术中转账操作时存在的性能瓶颈和死锁问题,将一个转账事务分为两件事务来处理,出款操作时仅对出款账户加锁,其它账户不需要加锁,而入款操作时仅对入款账户加锁,从而可以让出款账户和入款账户都无需等待对方的出款和入款操作的完成,提升性能,出款和入款的分离避免了死锁情况的出现。

为了实现上述目的,本发明实施例提供一种转账方法,所述方法包括:接收业务方发送的包含有转账参数的转账请求,所述转账参数包括入款账户、出款账户、转账金额以及订单号;判断所述转账参数是否满足转账要求;当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作;当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作;当对所述转账请求对应的所述入款账户执行入款操作后,将与所述转账请求对应的订单号和交易流水号返回所述业务方。

进一步地,所述转账要求包括所述出款账户满足交易操作的要求、所述出款账户中的余额大于或等于所述转账金额以及所述入款账户满足交易操作的要求。

进一步地,所述当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作的步骤,包括:当所述转账参数满足所述转账要求时,将所述转账请求存入数据库中,并将所述数据库中的所述转账请求的状态标识为未出款状态;生成所述转账请求对应的交易流水号,并将所述交易流水号返回至所述业务方;将所述转账请求加入出款队列中等待执行出款操作。

进一步地,在所述对所述转账请求对应的所述出款账户执行出款操作的步骤之后,所述方法还包括:将所述数据库中的所述转账请求的状态标识为未入款状态,并删除所述出款队列中的所述转账请求。

进一步地,在所述对所述转账请求对应的所述入款账户执行入款操作的步骤之后,所述方法还包括:将所述数据库中的所述转账请求的状态标识为已入款状态,并删除所述入款队列中的所述转账请求。

进一步地,所述方法还包括:间隔设定时间查看所述数据库中的转账请求的状态;将所述数据库中状态为未出款状态以及未入款状态的转账请求,分别加入所述出款队列和所述入款队列中等待执行对应的出款和入款操作。

相应的,本发明实施例还提供一种转账装置,包括:接收单元,用于接收业务方发送的包含有转账参数的转账请求,所述转账参数包括入款账户、出款账户、转账金额以及订单号;判断单元,用于判断所述转账参数是否满足转账要求;出入款操作单元,用于当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作;当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作;发送单元,用于当对所述转账请求对应的所述入款账户执行入款操作后,将与所述转账请求对应的订单号和交易流水号返回所述业务方。

进一步地,所述转账要求包括所述出款账户满足交易操作的要求、所述出款账户中的余额大于或等于所述转账金额以及所述入款账户满足交易操作的要求。

进一步地,所述出入款操作单元还包括:存储模块,用于当所述转账参数满足所述转账要求时,将所述转账请求存入数据库中;状态设置模块,用于将所述数据库中的所述转账请求的状态标识为未出款状态;流水号处理模块,用于生成所述转账请求对应的交易流水号,并将所述交易流水号返回至所述业务方;队列操作模块,用于将所述转账请求加入出款队列中等待执行出款操作。

进一步地,所述状态设置模块还用于将所述数据库中的所述转账请求的状态标识为未入款状态;所述队列操作模块还用于删除所述出款队列中的所述转账请求。

进一步地,所述状态设置模块还用于将所述数据库中的所述转账请求的状态标识为已入款状态;所述队列操作模块还用于删除所述入款队列中的所述转账请求。

进一步地,所述装置还包括:查看单元,用于间隔设定时间查看所述数据库中的转账请求的状态;所述出入款操作单元还用于将所述数据库中状态为未出款状态以及未入款状态的转账请求,分别加入所述出款队列和所述入款队列中等待执行对应的出款和入款操作。

相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述的转账方法。

相应的,本发明实施例还提供一种设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上所述的转账方法。

通过上述技术方案,财务系统在接收业务方发送的包含有转账参数的转账请求之后,判断所述转账参数是否满足转账要求,其中所述转账参数包括入款账户、出款账户、转账金额以及订单号,当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作,当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作,然后,当对所述转账请求对应的所述入款账户执行入款操作后,将与所述转账请求对应的订单号和交易流水号返回所述业务方。本发明实施例解决了现有技术中转账操作时存在的性能瓶颈和死锁问题,通过出款和入款的分离避免了死锁情况的出现,同时出款账户和入款账户都无需等待对方的出款和入款操作的完成,提升性能。

本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:

图1是本发明实施例提供的一种转账方法的流程示意图;

图2是本发明实施例提供的另一种转账方法的流程示意图;

图3是本发明实施例提供的一种转账装置的结构示意图;

图4是本发明实施例提供的另一种转账装置的结构示意图;

图5是本发明实施例提供的又一种转账装置的结构示意图;

图6是本发明实施例提供的一种设备的结构示意图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

图1是本发明实施例提供的一种转账方法的流程示意图。如图1所示,所述方法可应用于财务系统,所述方法包括如下步骤:

步骤101,接收业务方发送的包含有转账参数的转账请求,所述转账参数包括入款账户、出款账户、转账金额以及订单号;

步骤102,判断所述转账参数是否满足转账要求;

步骤103,当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作;

步骤104,当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作;

步骤105,当对所述转账请求对应的所述入款账户执行入款操作后,将与所述转账请求对应的订单号和交易流水号返回所述业务方。

其中,财务系统在收到业务方发送的包含有转账参数的转账请求之后,通过所述转账请求中的转账参数先判断出款账户和入款账户是否满足转账要求。其中,所述转账参数包括入款账户、出款账户、转账金额以及订单号。其中所述入款账户为本次转账请求中的转账金额要打入的账户,所述出款账户为本次转账请求中的转账金额要提出的账户,所述订单号用于标识本次转账请求。

之后,财务系统对所述转账参数进行校验,判断所述转账参数是否满足转账要求。其中,所述转账要求包括所述出款账户满足交易操作的要求、所述出款账户中的余额大于或等于所述转账金额以及所述入款账户满足交易操作的要求。即,当判断同时满足所述转账要求的条件时,确定所述转账参数满足所述转账要求,若是上述条件中有任意一条没有满足,则本次转账请求不予受理,直接退回所述转账请求。

当所述财务系统判断出所述转账参数满足所述转账要求时,则将所述转账请求加入出款队列中等待执行出款操作。所述出款队列中存放有大量的等待执行出款操作的出款任务,所述出款队列中的出款任务按序执行,当执行到本次转账请求的出款任务时,则将本次转账请求对应的所述出款账户加锁,并在对所述转账请求对应的所述出款账户执行出款操作之后,再将所述出款账户解锁,执行下一个出款任务并对下一个出款任务对应的出款账户加锁,以此类推。在对所述转账请求对应的所述出款账户执行出款操作之后,将所述转账请求加入入款队列中等待执行入款操作。所述入款队列中存放有大量的等待执行入款操作的入款任务,所述入款队列中的入款任务按序执行,当执行到本次转账请求的入款任务时,则将本次转账请求对应的所述入款账户加锁,并在对所述转账请求对应的所述入款账户执行入款操作之后,再将所述入款账户解锁,执行下一个入款认为并对下一个入款任务对应的入款账户加锁,以此类推。

另外,当所述转账参数满足所述转账要求的时候,生成所述转账请求对应的交易流水号,证明所述财务系统已经受理了本次转账请求,并可将所述交易流水号返回给所述业务方。

当对所述转账请求对应的所述入款账户执行入款操作后,即表明所述转账请求已经分别执行了出款操作和入款操作,所述出款转账已经将转账金额转出,而所述入款账户已经将转账金额转入,则将与所述转账请求对应的订单号和交易流水号返回所述业务方,通知所述业务方本次转账请求已经处理完毕。

在本发明实施例的一种实施方式中,由于出款队列和入款队列的长度有限,以及为了避免转账请求由于宕机等系统故障问题丢失,当判断所述转账参数满足所述转账要求时,将所述转账请求存入数据库中,由数据库保存所有转账请求,方便在财务系统中查账,以及在所述转账请求为退款请求时,可通过查看所述数据库中与所述退款请求对应的转账请求执行退款操作。因此,在将所述转账请求存入所述数据库的同时,将所述数据库中的所述转账请求的状态标识为未出款状态,并生成所述转账请求对应的交易流水号,然后将所述交易流水号返回至所述业务方,之后,将所述转账请求加入出款队列中等待执行出款操作。当所述转账请求对应的所述出款账户执行出款操作之后,将所述数据库中的所述转账请求的状态标识为未入款状态,并删除所述出款队列中的所述转账请求,以便执行所述出款队列中的下一个出款任务。当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作,并在对所述转账请求对应的所述入款账户执行入款操作之后,将所述数据库中的所述转账请求的状态标识为已入款状态,并删除所述入款队列中的所述转账请求,以便执行所述入款队列中的下一个入款任务。

另外,在本发明实施例的另一种实施方式中,在高并发转账过程中,可间隔设定时间查看所述数据库中的转账请求的状态,并将所述数据库中状态为未出款状态以及未入款状态的转账请求,分别加入所述出款队列和所述入款队列中等待执行对应的出款和入款操作。例如,当查找到所述数据库中的转账请求的状态为未出款状态时,则将所述转账请求加入所述出款队列中等待执行对应的出款操作,并在执行出款操作之后,将所述转账请求加入入款队列中等待执行入款操作,在执行入款操作之后,将所述转账请求在所述数据库中的状态标识为已入款状态。若是查找到所述数据库中存在状态为未入款状态时,则将对应的转账请求加入所述入款队列中等待执行入款操作,并在执行入款操作之后,将所述转账请求在所述数据库中的状态标识为已入款状态。无论是上述哪一种情况,在所述转账请求的状态标识为已入款状态之后,即将所述转账请求对应的订单号和交易流水号返回对应的业务方。

为了便于理解本发明实施例,图2是本发明实施例提供一种转账方法的流程示意图,如图2中所示,所述方法应用于财务系统中,具体包括如下步骤:

步骤201,接收业务方发送的包含有转账参数的转账请求;

步骤202,判断所述转账参数是否满足转账要求,当满足时,则执行步骤203,不满足时执行步骤213;

步骤203,将所述转账请求存入数据库中,并将所述数据库中的所述转账请求的状态标识为未出款状态;

步骤204,生成所述转账请求对应的交易流水号,并将所述交易流水号返回至所述业务方;

步骤205,将所述转账请求加入出款队列中等待执行出款操作;

步骤206,当对所述转账请求对应的所述出款账户执行出款操作后,将所述数据库中的所述转账请求的状态标识为未入款状态,并删除所述出款队列中的所述转账请求;

步骤207,将所述转账请求加入入款队列中等待执行入款操作;

步骤208,当对所述转账请求对应的所述入款账户执行入款操作后,将所述数据库中的所述转账请求的状态标识为已入款状态,并删除所述入款队列中的所述转账请求;

步骤209,将与所述转账请求对应的订单号和交易流水号返回所述业务方;

步骤210,间隔设定时间查看所述数据库中的转账请求的状态;

步骤211,将所述数据库中状态为未出款状态的转账请求加入所述出款队列等待执行对应的出款操作,并继续执行步骤206;

步骤212,将所述数据库中状态为未入款状态的转账请求加入所述入款队列中等待执行对应的入款操作,并继续执行步骤208;

步骤213,退回所述转账请求。

通过本发明实施例,将一件转账事务分离为入款和出款两件事务进行处理,而且在处理出款(或入款)操作时仅需要对出款账户(或入款账户)进行加锁,并不需要其它账户的等待,如对应的入款账户(或出款账户),提升了系统的处理性能,另外若是存在两个转账请求,一个是正常的转账请求,而另一个是对应账户的退款请求,对于现有技术中存在的死锁问题,在本发明实施例中由于出款和入款的分离就保证了不会出现死锁问题。

相应的,图3是本发明实施例提供的一种转账装置的结构示意图。如图3所示,所述装置存在于财务系统中,所述装置30包括:接收单元31,用于接收业务方发送的包含有转账参数的转账请求,所述转账参数包括入款账户、出款账户、转账金额以及订单号;判断单元32,用于判断所述转账参数是否满足转账要求;出入款操作单元33,用于当所述转账参数满足所述转账要求时,将所述转账请求加入出款队列中等待执行出款操作;当对所述转账请求对应的所述出款账户执行出款操作后,将所述转账请求加入入款队列中等待执行入款操作;发送单元34,用于当对所述转账请求对应的所述入款账户执行入款操作后,将与所述转账请求对应的订单号和交易流水号返回所述业务方。

进一步地,所述转账要求包括所述出款账户满足交易操作的要求、所述出款账户中的余额大于或等于所述转账金额以及所述入款账户满足交易操作的要求。

进一步地,如图4所示,所述出入款操作单元33还包括:存储模块41,用于当所述转账参数满足所述转账要求时,将所述转账请求存入数据库中;状态设置模块42,用于将所述数据库中的所述转账请求的状态标识为未出款状态;流水号处理模块43,用于生成所述转账请求对应的交易流水号,并将所述交易流水号返回至所述业务方;队列操作模块44,用于将所述转账请求加入出款队列中等待执行出款操作。

进一步地,所述状态设置模块还用于将所述数据库中的所述转账请求的状态标识为未入款状态;所述队列操作模块还用于删除所述出款队列中的所述转账请求。

进一步地,所述状态设置模块还用于将所述数据库中的所述转账请求的状态标识为已入款状态;所述队列操作模块还用于删除所述入款队列中的所述转账请求。

进一步地,如图5所示,所述装置还包括:查看单元51,用于间隔设定时间查看所述数据库中的转账请求的状态;所述出入款操作单元还用于将所述数据库中状态为未出款状态以及未入款状态的转账请求,分别加入所述出款队列和所述入款队列中等待执行对应的出款和入款操作。

所述转账装置的具体实现过程,参见上述转账方法的处理过程。

相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述实施例所述的转账方法。

相应的,图6是本发明实施例提供的一种设备的结构示意图,如图6所示,所述设备60包括至少一个处理器61、以及与所述处理器连接的至少一个存储器62、总线63;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上述实施例所述的转账方法。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 由计算设备执行的转账方法和应用于计算设备的转账装置
  • 转账数据处理方法、装置、存储介质及电子设备
技术分类

06120112939649