订单数据的处理方法及装置、存储介质、计算机设备与流程

文档序号:19827984发布日期:2020-02-04 12:05阅读:217来源:国知局
订单数据的处理方法及装置、存储介质、计算机设备与流程

本申请涉及互联网技术领域,尤其是涉及到一种订单数据的处理方法及装置、存储介质、计算机设备。



背景技术:

随着互联网技术的发展,尤其是电子商务产业发展的如火如荼,人们越来越习惯通过电子商务网站购买商品或服务。然而,在目前的电子商务网站中,经常会出现下单时明明还有库存,但是支付时缺显示商品缺货,无法购买的情况,严重影响用户的购物体验。



技术实现要素:

有鉴于此,本申请提供了一种订单数据的处理方法及装置、存储介质、计算机设备,能够实现对用户已下单商品的库存锁定,避免用户无法对已下单的商品进行支付。

根据本申请的一个方面,提供了一种订单数据的处理方法,包括:

接收到订单数据之后,根据所述订单数据生成事务消息表;

将所述事务消息表中的所述订单数据写入消息中间件中;

所述消息中间件向所述订单数据相关的至少一个节点发送所述订单数据,以使所述至少一个节点根据所述订单数据执行本地事务,并在执行成功后反馈执行成功回执;

接收所述执行成功回执,并根据所述执行成功回执删除所述事务消息表中相关的所述订单数据。

在本申请的一个实施例中,具体地,所述订单数据包括订单编号、商品编码和商品数量,所述至少一个节点包括库存系统;

所述所述消息中间件向所述订单数据相关的至少一个节点发送所述订单数据,以使所述至少一个节点根据所述订单数据执行本地事务,并在执行成功后反馈执行成功回执,具体包括:

所述消息中间件向所述库存系统发送所述订单数据,以使所述库存系统根据所述商品编码和所述商品数量临时锁定库存,并反馈库存锁定成功回执。

在本申请的一个实施例中,具体地,所述订单数据还包括优惠券编码,所述至少一个节点还包括优惠券系统;

所述所述消息中间件向所述订单数据相关的至少一个节点发送所述订单数据,以使所述至少一个节点根据所述订单数据执行本地事务,并在执行成功后反馈执行成功回执,具体还包括:

所述消息中间件向所述优惠券系统发送所述订单数据,以使所述优惠券系统根据所述优惠券编码临时锁定相应的优惠券,并反馈优惠券锁定成功回执。

在本申请的一个实施例中,具体地,所述库存锁定执行成功回执包括锁定订单编号、锁定商品编码和锁定商品数量,所述优惠券锁定执行成功回执包括所述锁定订单编号和锁定优惠券编码;

所述接收所述执行成功回执,并根据所述执行成功回执删除所述事务消息表中相关的所述订单数据,具体包括:

接收所述库存锁定成功回执以及所述优惠券锁定成功回执;

按照所述锁定订单编号,查找所述事务消息表中的所述订单数据,并比较所述订单数据包含的所述商品编码与所述锁定商品编码、所述商品数量与所述锁定商品数量以及所述优惠券编码与所述锁定优惠券编码是否一致;

若所述商品编码与所述锁定商品编码、所述商品数量与所述锁定商品数量以及所述优惠券编码与所述锁定优惠券编码均一致,则将所述事务消息表中的与所述锁定订单编号的相关订单数据删除。

在本申请的一个实施例中,具体地,所述所述消息中间件向所述订单数据相关的至少一个节点发送所述订单数据之后,所述方法还包括:

在所述消息中间件中删除已发送的所述订单数据。

在本申请的一个实施例中,具体地,所述将所述事务消息表中的所述订单数据写入消息中间件中,具体包括:

定时扫描所述事务消息表,若所述事务消息表中包含所述订单数据,则将所述订单数据写入所述消息中间件中。

在本申请的一个实施例中,具体地,所述方法还包括:

若所述至少一个节点在预设超时处理时间内未接收到与所述订单数据相关联的支付数据,则将临时锁定的所述库存以及所述优惠券解锁;

若所述至少一个节点在所述预设超时处理时间内接收到所述支付数据,则将临时锁定的所述库存以及所述优惠券转换为正式锁定。

根据本申请的另一方面,提供了一种订单数据的处理装置,包括:

消息表生成模块,用于接收到订单数据之后,根据所述订单数据生成事务消息表;

消息写入模块,用于将所述事务消息表中的所述订单数据写入消息中间件中;

数据发送模块,用于所述消息中间件向所述订单数据相关的至少一个节点发送所述订单数据,以使所述至少一个节点根据所述订单数据执行本地事务,并在执行成功后反馈执行成功回执;

回执接收模块,用于接收所述执行成功回执,并根据所述执行成功回执删除所述事务消息表中相关的所述订单数据。

依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述订单数据的处理方法。

依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述订单数据的处理方法。

借由上述技术方案,本申请提供的一种订单数据的处理方法及装置、存储介质、计算机设备,在接收到订单数据后,依据订单数据生成事务消息表,并将该事务消息表写入消息中间件中,通过消息中间件向相关节点转发订单数据,从而在相关节点依据订单数据执行完成本地事务后,将执行完成的相关订单数据从事务消息表中删除。本申请通过向订单数据的相关节点发送订单数据,从而使相关节点可以依据订单数据执行本地事务,预留订单相关资源,以保证用户下单成功后可以按照订单价格完成商品购买,并且数据通过具备解耦效果的消息中间件传递,可实现各系统之间的消息传输,无需重新编码,系统入侵性低,安全性强。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1示出了本申请实施例提供的一种订单数据的处理方法的流程示意图;

图2示出了本申请实施例提供的另一种订单数据的处理方法的流程示意图;

图3示出了本申请实施例提供的一种订单数据的处理装置的结构示意图;

图4示出了本申请实施例提供的另一种订单数据的处理装置的结构示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本实施例中提供了一种订单数据的处理方法,如图1所示,该方法包括:

步骤101,接收到订单数据之后,根据订单数据生成事务消息表。

在本申请实施例中,用户在电子商务网站下单后,线上销售平台会向数据库发送用户下单的订单数据,数据库系统在接收到来自一个或多个线上销售平台发送的订单数据后,将订单数据写入事务消息表中,事务消息表中的订单数据的顺序可以按照订单数据中的下单时间排列,从而便于依据事务消息表处理库存。

步骤102,将事务消息表中的订单数据写入消息中间件中。

消息中间件(messageorientedmiddleware,mom,也称为面向消息的中间件)技术,提供了以松散耦合的灵活方式进行消息传递的一种中间件机制。mom能够实现在不同平台之间的通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同。目前主流的消息中间件产品包括国际商业机器公司(internationalbusinessmachinescorporation,ibm)的mqseries,东亚银行(bankofeastasia,bea)的messageq和太阳公司(sun)的java消息服务(javamessageservice,jms)等。mom包括基于存储和转发的应用之间的异步消息传递或同步消息传递。本申请中的消息中间件可以包括异步消息传递。在异步消息传递中,各应用系统之间彼此不直接通信,而是与作为中介的消息中间件服务器通信。

本申请中可以采用消息中间件mq,将事务消息表中的订单数据写入消息中间件mq中,以便消息中间件mq向相关系统中转发消息。

步骤103,消息中间件向订单数据相关的至少一个节点发送订单数据,以使至少一个节点根据订单数据执行本地事务,并在执行成功后反馈执行成功回执。

通过消息中间件mq向与订单数据相关的至少一个节点中发送订单数据,订单数据中通常包含多种数据,以订单数据中包含下单商品、下单商品数量、预计使用的优惠券、需支付的金额等,若想保证用户下单的商品一定能够按照订单数据中的需支付的金额购买到,那么在用户下单后需要至少保证以下两点:第一,库存系统中能够预留对应数量的商品;第二,优惠券系统中能够预留预计使用的优惠券,只有满足了以上两点,才能保证用户能够买到足够数量的商品,且支付的金额与订单数据中对应的金额相符。因此,在消息中间件向订单数据相关的至少一个节点发送订单数据后,这里的至少一个节点可以包括库存系统和优惠券系统,该节点需根据订单数据执行本地事务,例如预留对应数量的商品库存、预留相应的优惠券,并且在至少一个节点执行本地事务成功后会向消息中间件反馈执行成功回执信息。

步骤104,接收执行成功回执,并根据执行成功回执删除事务消息表中相关的订单数据。

消息中间件mq接收到上述的至少一个节点发送的执行成功回执后,将执行成功回执传递至数据库中,从而数据库系统依据执行成功回执删除事务消息表中的订单数据,避免订单数据的重复发送,增加服务器负担,造成节点执行本地事务错误。

通过应用本实施例的技术方案,在接收到订单数据后,依据订单数据生成事务消息表,并将该事务消息表写入消息中间件中,通过消息中间件向相关节点转发订单数据,从而在相关节点依据订单数据执行完成本地事务后,将执行完成的相关订单数据从事务消息表中删除。本申请通过向订单数据的相关节点发送订单数据,从而使相关节点可以依据订单数据执行本地事务,预留订单相关资源,以保证用户下单成功后可以按照订单价格完成商品购买,并且数据通过具备解耦效果的消息中间件传递,可实现各系统之间的消息传输,无需重新编码,系统入侵性低,安全性强。

进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种订单数据的处理方法,如图2所示,该方法包括:

步骤201,接收到订单数据之后,根据订单数据生成事务消息表。

接收到订单数据后,根据订单数据生成事务消息表作为订单数据相关的各系统执行本地事务的依据。

步骤202,定时扫描事务消息表,若事务消息表中包含订单数据,则将订单数据写入消息中间件中。

定时扫描事务消息表,如果事务消息表中存在订单数据,则将订单数据写入消息中间件mq中,以便通过消息中间件mq向其他系统中传输,通过定时扫描的方式可以保证消息发送的可靠性。

步骤203,消息中间件向订单数据相关的至少一个节点发送订单数据,以使至少一个节点根据订单数据执行本地事务,并在执行成功后反馈执行成功回执。

在本申请的实施例中,具体地,订单数据包括订单编号、商品编码和商品数量,至少一个节点包括库存系统。

上述步骤203,具体包括:消息中间件向库存系统发送订单数据,以使库存系统根据商品编码和商品数量临时锁定库存,并反馈库存锁定成功回执。

在上述实施例中,订单数据具体可以包括订单编号,商品编码以及商品数量,从而依据订单数据可以在库存系统中预留对应数量的商品,并将预留的商品与订单编号绑定,基于此,上述的至少一个节点可以包括库存系统。当消息中间件mq向库存系统发送订单数据时,库存系统会依据订单数据中的商品编码以及商品数量,临时锁定对应数量的商品,并将锁定的商品与订单编号绑定,从而保证用户的这笔订单下单成功后,库存系统中能够保留有相应的库存为其供货,库存临时锁定成功后,会反馈一个执行成功的回执,该回执具体可以包括订单编号、临时锁定的商品编码及商品数量,以便后续根据该回执内的订单编号确定哪些订单中的商品已经临时锁定了库存,通过临时锁定库存,可以避免用户下单成功后因支付不及时等原因造成无法购买,影响用户购物体验。

另外,订单数据还包括优惠券编码,至少一个节点还包括优惠券系统。

上述步骤203,具体还包括:消息中间件向优惠券系统发送订单数据,以使优惠券系统根据优惠券编码临时锁定相应的优惠券,并反馈优惠券锁定成功回执。

在本申请的实施例中,在电子商务网站中,商家为了促进消费,经常会提供一些优惠券、代金券等优惠,供用户在支付时抵消部分支付款,在用户下单时,通常会将优惠券、代金券结算在订单中,因此,订单数据中还包括优惠券(或代金券)编码,上述的至少一个节点还包括优惠券系统。与库存系统相似的,当消息中间件mq向优惠券系统发送订单数据时,优惠券系统会依据订单数据中的优惠券编码,临时锁定对应的优惠券,并将锁定的优惠券与订单编号绑定,从而保证用户的这笔订单下单成功后,优惠券系统中该优惠券可以在用户支付这笔订单时成功使用,优惠券临时锁定成功后,也会反馈一个执行成功的回执,该回执具体可以包括订单编号和临时锁定的优惠券编码,以便后续根据该回执内的订单编号确定哪些订单中的优惠券已经临时锁定了库存,通过临时锁定优惠券,可以保证用户在支付相应的订单时可以成功使用上述临时锁定的优惠券。

在本申请的实施例中,具体地,若至少一个节点在预设超时处理时间内未接收到与订单数据相关联的支付数据,则将临时锁定的库存以及优惠券解锁;若至少一个节点在预设超时处理时间内接收到支付数据,则将临时锁定的库存以及优惠券转换为正式锁定。

需要说明的是,若用户下单成功后在一定时间内完成支付,则临时锁定的库存和优惠券将会变为正式锁定,库存和优惠券一旦正式锁定后就不可再用户其他订单的临时锁定。同时,为了避免用户误下单或下单后不想购买等情况导致的下单后长时间不完成支付影响其他用户购买的情况发生,对于临时锁定的库存和优惠券,库存系统和优惠券系统会为临时锁定的情况预设一个超时处理时间,当临时锁定的库存和优惠券对应的订单长时间未被支付,即未被正式锁定,那么将临时锁定的库存和优惠券解锁,从而不影响库存和优惠券被其他订单临时锁定。

步骤204,在消息中间件中删除已发送的订单数据。

为了避免订单数据的重复发送,通过消息中间件mq传输消息后,将已传输的订单数据进行删除。

步骤205,接收库存锁定成功回执以及优惠券锁定成功回执。

接收消息中间件mq传递的库存锁定成功回执以及优惠券锁定成功回执,其中,库存锁定执行成功回执包括锁定订单编号、锁定商品编码和锁定商品数量,优惠券锁定执行成功回执包括锁定订单编号和锁定优惠券编码。

步骤206,按照锁定订单编号,查找事务消息表中的订单数据,并比较订单数据包含的商品编码与锁定商品编码、商品数量与锁定商品数量以及优惠券编码与锁定优惠券编码是否一致。

步骤207,若商品编码与锁定商品编码、商品数量与锁定商品数量以及优惠券编码与锁定优惠券编码均一致,则将事务消息表中的与锁定订单编号的相关订单数据删除。

按照库存锁定成功回执和优惠券锁定成功回执中包含的锁定订单编号,查找事务消息表中的订单数据,当且仅当一笔订单中包含的对应数量的商品以及使用的优惠券与临时锁定的商品及商品数量和临时锁定的优惠券匹配一致时,说明订单中包含的商品和优惠券已经全部锁定成功,说明此时按照订单上的支付金额进行支付后已经可以完成订单中的对应数量的商品的购买,可以保证用户成功购买,那么这时可以将事务消息表中的相关订单数据进行删除,以免重复发送事务消息表中的订单数据造成相关系统运行错误或重复锁定影响其他用户购买。

通过应用本实施例的技术方案,对于以成功下单的订单,通过消息中间件mq向库存、优惠券等系统传递订单数据,从而使各系统根据订单数据临时锁定库存、优惠券,实现了订单系统、库存系统、优惠券系统等的分布式事务一致性,保证了用户下单成功的订单一定能够成功支付,避免用户下单成功后因库存不足、优惠券无法使用等情况发生无法实现支付,有助于提升用户的购物体验,并且通过消息中间件mq传递数据,各系统之间耦合度低,易于实现。

进一步的,作为图1方法的具体实现,本申请实施例提供了一种订单数据的处理装置,如图3所示,该装置包括:消息表生成模块31、消息写入模块32、数据发送模块33、数据删除模块34。

消息表生成模块31,用于接收到订单数据之后,根据订单数据生成事务消息表;

消息写入模块32,用于将事务消息表中的订单数据写入消息中间件中;

数据发送模块33,用于消息中间件向订单数据相关的至少一个节点发送订单数据,以使至少一个节点根据订单数据执行本地事务,并在执行成功后反馈执行成功回执;

数据删除模块34,用于接收执行成功回执,并根据执行成功回执删除事务消息表中相关的订单数据。

在具体的应用场景中,如图4所示,订单数据包括订单编号、商品编码和商品数量,至少一个节点包括库存系统;订单数据还包括优惠券编码,至少一个节点还包括优惠券系统;数据发送模块33,具体包括:库存数据发送单元331,优惠券数据发送单元332。

库存数据发送单元331,用于消息中间件向库存系统发送订单数据,以使库存系统根据商品编码和商品数量临时锁定库存,并反馈库存锁定成功回执。

优惠券数据发送单元332,用于消息中间件向优惠券系统发送订单数据,以使优惠券系统根据优惠券编码临时锁定相应的优惠券,并反馈优惠券锁定成功回执。

在具体的应用场景中,如图4所示,库存锁定执行成功回执包括锁定订单编号、锁定商品编码和锁定商品数量,优惠券锁定执行成功回执包括锁定订单编号和锁定优惠券编码;数据删除模块34,具体包括:回执接收单元341、数据比较单元342、数据删除单元343。

回执接收单元341,用于接收库存锁定成功回执以及优惠券锁定成功回执;

数据比较单元342,用于按照锁定订单编号,查找事务消息表中的订单数据,并比较订单数据包含的商品编码与锁定商品编码、商品数量与锁定商品数量以及优惠券编码与锁定优惠券编码是否一致;

数据删除单元343,用于若商品编码与锁定商品编码、商品数量与锁定商品数量以及优惠券编码与锁定优惠券编码均一致,则将事务消息表中的与锁定订单编号的相关订单数据删除。

在具体的应用场景中,如图4所示,该装置还包括:订单删除模块35。

订单删除模块35,用于消息中间件向订单数据相关的至少一个节点发送订单数据之后,在消息中间件中删除已发送的订单数据。

消息写入模块32,具体用于定时扫描事务消息表,若事务消息表中包含订单数据,则将订单数据写入消息中间件中。

在本申请的实施例中,具体地,若至少一个节点在预设超时处理时间内未接收到与订单数据相关联的支付数据,则将临时锁定的库存以及优惠券解锁;

若至少一个节点在预设超时处理时间内接收到支付数据,则将临时锁定的库存以及优惠券转换为正式锁定。

需要说明的是,本申请实施例提供的一种订单数据的处理装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。

基于上述如图1和图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的订单数据的处理方法。

基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。

基于上述如图1、图2所示的方法,以及图3、图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的订单数据的处理方法。

可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radiofrequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。

本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。

存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现在接收到订单数据后,依据订单数据生成事务消息表,并将该事务消息表写入消息中间件中,通过消息中间件向相关节点转发订单数据,从而在相关节点依据订单数据执行完成本地事务后,将执行完成的相关订单数据从事务消息表中删除。本申请通过向订单数据的相关节点发送订单数据,从而使相关节点可以依据订单数据执行本地事务,预留订单相关资源,以保证用户下单成功后可以按照订单价格完成商品购买,并且数据通过具备解耦效果的消息中间件传递,可实现各系统之间的消息传输,无需重新编码,系统入侵性低,安全性强。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1