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

一种订单处理方法、装置、电子设备及可读存储介质

文献发布时间:2023-06-19 13:45:04


一种订单处理方法、装置、电子设备及可读存储介质

技术领域

本申请涉及计算机技术领域,特别涉及一种订单处理方法、订单处理装置、电子设备及计算机可读存储介质。

背景技术

在直播带货等网上购物形式的情境下,网络购物订单的创建和改变呈现短时大量的情况。通过集群任务,订单会定时从三方系统同步过来,使用Kafka(即卡夫卡)这个消息中间件作为中间传输载体处理订单,提取其中的信息。订单的状态可能发生变化,例如从已创建变为已付款或已发货,或者由已创建变为已取消。由于订单量很大,而且状态变化较快,对于同步的实时订单金额计算造成了较大的难度。当前,在获取到订单后,需要根据订单身份信息确定一系列状态不同的相同订单(即订单身份信息相同但状态不同的订单),并对其进行排序,排序完毕后,进行金额的计算。然而,排序过程需要消耗大量的计算资源和计算时间,使得订单处理速度较慢。

因此,相关技术存在的订单处理速度较慢的问题,是本领域技术人员需要解决的技术问题。

发明内容

有鉴于此,本申请的目的在于提供一种订单处理方法、订单处理装置、电子设备及计算机可读存储介质,节省了计算资源的消耗,提高了订单处理速度。

为解决上述技术问题,本申请提供了一种订单处理方法,包括:

获取多个待处理订单,将所述待处理订单输入卡夫卡中间件,得到多个订单信息;各个所述订单信息包括状态信息、订单金额和身份信息;

利用所述状态信息确定所述订单金额对应的目标操作;

利用所述身份信息搜索数据表,得到搜索结果;

若所述搜索结果和所述状态信息不匹配,则根据所述订单金额,对所述数据表执行所述目标操作。

可选地,所述将所述待处理订单输入卡夫卡中间件,得到多个订单信息,包括:

将各个所述待处理订单随机输入所述卡夫卡中间件的各个分区中,并利用各个所述分区对应的消费程序对所述待处理订单进行并行处理,得到所述订单信息。

可选地,还包括:

响应于数量设置指令,将所述卡夫卡中间件中的所述分区的数量设置为目标数量。

可选地,所述利用所述状态信息确定所述订单金额对应的目标操作,包括:

若状态信息为订单有效状态,则确定所述目标操作为增加操作;

若所述状态信息为订单无效状态,则确定所述目标操作为减少操作。

可选地,若所述搜索结果和所述状态信息不匹配,则根据所述订单金额,对所述数据表执行所述目标操作,包括:

若所述搜索结果为命中,且所述状态信息为订单无效状态,则确定不匹配;

从所述数据表中减去所述订单金额。

可选地,若所述搜索结果和所述状态信息不匹配,则根据所述订单金额,对所述数据表执行所述目标操作,包括:

若所述搜索结果为未命中,且所述状态信息为订单有效状态,则确定不匹配;

将所述订单金额加入所述数据表。

可选地,所述身份信息包括至少两个身份子信息,所述利用所述身份信息搜索数据表,得到搜索结果,包括:

判断所述数据表中是否存在与各个所述身份子信息均匹配的目标数据项;

若存在,则确定所述搜索结果为命中;

若不存在,则确定所述搜索结果为未命中。

本申请还提供了一种订单处理装置,包括:

处理模块,用于获取多个待处理订单,将所述待处理订单输入卡夫卡中间件,得到多个订单信息;各个所述订单信息包括状态信息、订单金额和身份信息;

操作确定模块,用于利用所述状态信息确定所述订单金额对应的目标操作;

搜索模块,用于利用所述身份信息搜索数据表,得到搜索结果;

执行模块,用于若所述搜索结果和所述状态信息不匹配,则根据所述订单金额,对所述数据表执行所述目标操作。

本申请还提供了一种电子设备,包括存储器和处理器,其中:

所述存储器,用于保存计算机程序;

所述处理器,用于执行所述计算机程序,以实现上述的订单处理方法。

本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的订单处理方法。

本申请提供的订单处理方法,获取多个待处理订单,将待处理订单输入卡夫卡中间件,得到多个订单信息;各个订单信息包括状态信息、订单金额和身份信息;利用状态信息确定订单金额对应的目标操作;利用身份信息搜索数据表,得到搜索结果;若搜索结果和状态信息满足与状态信息不符的执行条件,则根据订单金额,对数据表执行目标操作。

可见,该方法利用卡夫卡中间件对订单进行处理后,得到对应的订单信息,其中进一步包括状态信息、订单金额和身份信息。可以理解的是,订单的状态可以表征订单的后续处理方式,例如在创建、付款、收货等状态下,订单对应的订单金额应当被统计,因为在上述状态下生成订单的用户会支付订单金额。而在退款等状态下,订单对应的订单金额不应当被通缉,因为用户不会支付订单金额。基于上述思路,则可以根据状态信息确定订单金额对应的目标操作,即应当统计或不应当统计该订单金额。在确定目标操作后,利用身份信息对数据表进行搜索,判断是否存在与该身份信息对应的数据项,即是否已经统计了该身份信息对应的订单金额。若搜索结果与状态信息满足与状态信息不符的执行条件,说明数据表没有对订单金额进行了正确地处理,即应当记录但没有记录,或不应当记录但记录了,因此根据订单金额对数据表执行目标操作,例如增加或删除。该方法通过将状态信息映射为目标操作,在保证了数据表的准确性和可靠性的前提下,无需对同一身份信息的各个订单进行排序后再进行处理,减少了排序过程,节省了计算资源的消耗,提高了订单处理速度。

此外,本申请还提供了一种订单处理装置、电子设备及计算机可读存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种订单处理方法流程图;

图2为本申请实施例提供的一种订单处理装置的结构示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例提供的一种订单处理方法流程图。该方法包括:

S101:获取多个待处理订单,将待处理订单输入卡夫卡中间件,得到多个订单信息。

其中,各个订单信息均包括各自的状态信息、订单金额和身份信息。订单状态,是指待处理订单所处的状态,示例性的,可以为已失效、已付款、已收货、已结算、待付款、待发货、已发货、退款、订单审核等状态。订单金额,是指待处理订单所涉及到的产品或服务的金额,身份信息,是指能够唯一标识订单的信息。可以理解的是,同一个订单从产生到终止,其中涉及到多次订单状态改变。订单状态的改变并不会影响订单金额和身份信息,通常情况下,会将具有相同身份信息和不同状态信息的订单确定为不同的订单,根据订单状态随时间的变化确定最终需要执行的操作。因此,当前为了准确统计订单金额,需要按照身份信息对订单排序,并根据订单的最终状态确定统计方式,而排序则会造成计算资源和时间的消耗。

待处理订单可以在本地生成,或者可以调用第三方接口,从其他电子设备或集群处同步到本地以便后续处理,每次获取到的待处理订单数量不做限定。卡夫卡中间件是一款高性能的消息组件,其能够进行数据的缓存。卡夫卡中间件可以被设置有若干个分区,各个分区分别对应不同的消费者(进程),各个消费者之间并行运行。需要说明的是,由于本申请中不需要进行订单的排序,因此具有相同身份信息的待处理订单可以被随机分配至不同的分区,而不需要收到身份信息的限制而只能被分配至某一个分区,因此提高了订单输入的效率。具体的,将待处理订单输入卡夫卡中间件,得到多个订单信息的过程可以包括:

步骤11:将各个待处理订单随机输入卡夫卡中间件的各个分区中,并利用各个分区对应的消费程序对待处理订单进行并行处理,得到订单信息。

对于得到订单信息的具体方式本实施例不做限定,例如,消费程序可以按照预设周期拉取对应周期内的订单,并提取其中的订单信息。示例性的,预设周期可以为20秒,即每隔20秒钟从对应的分区中获取所有的或一定数量的订单,并提取其中的信息。在得到订单信息后,各个消费程序可以利用其继续执行后续的处理;或者,消费程序可以将订单信息发送至指定的程序(例如指定的LUA脚本,Lua是一种小巧的脚本语言),该指定的程序用于利用订单信息执行后续的处理操作。

通过随机输入分区的方式,可以尽快处理待处理订单,提高订单处理效率。此外,由于并不进行排序,各个分区以及对应的消费程序(即消费者)并行运行,因此卡夫卡中间件的分区数量并不受到限制,可以根据需要进行任意调整。因此,还可以包括如下步骤:

步骤21:响应于数量设置指令,将卡夫卡中间件中的分区的数量设置为目标数量。

目标数量的具体大小不做限定,其被数量设置指令指定,示例性的,目标数量可以为48或96。消费程序与分区为一一对应关系,二者数量相同。

S102:利用状态信息确定订单金额对应的目标操作。

状态信息的数量虽然较多,然而其表明了两类情况,即订单有效,需要统计其对应的订单金额的情况,以及订单无效,需要不统计其对应的订单金额的情况。基于该思路,即可根据状态信息是否表明订单有效的角度,对状态信息进行分类,并根据分类结果确定需要对订单金额执行的目标操作。在实际应用中,还可能存在状态信息无法表明订单是否无效的情况,示例性的,订单状态为代付款状态时,若后续用户付款,则订单有效,若后续不付款,则订单无效。因此,在利用状态信息确定订单金额之前,可以将无法表明订单是否有效的状态信息对应的订单信息删除,以便后续订单状态发生变化后再行处理。

具体的,利用状态信息确定订单金额对应的目标操作的过程具体包括:

步骤31:若状态信息为订单有效状态,则确定目标操作为增加操作。

步骤32:若状态信息为订单无效状态,则确定目标操作为减少操作。

订单有效状态,是指表明订单有意向完成的状态,订单无效状态,是指确定订单无法完成的状态。具体的,订单有效状态可以包括已付款状态、已收货状态、已结算状态、待发货状态、已发货状态,订单无效状态可以包括已失效状态、退款状态。在状态信息为订单有效状态时,说明若正常发展,订单能够完成,应当记录其对应的订单金额,因此将目标操作确定为增加操作,即若没有记录,则应当记录。在状态细腻为订单无效状态时,说明一斤确定订单无法完成,不应当记录其对应的订单金额,因此将目标操作确定为减少操作,即若有记录,则应当去除。

S103:利用身份信息搜索数据表,得到搜索结果。

在得到订单金额对应的目标操作后,还应当判断该待处理订单对应的订单金额是否已经被记录,避免对同一身份信息的订单金额进行多次记录进而造成记录错误。数据表,是指用于记录金额的统计表,其中记录有订单的身份信息,此外,还可以记录有各个身份信息单独对应的订单金额,或者记录有所有身份信息共同对应的总金额。因此利用身份信息对数据表进行搜索,得到的搜索结果即可表明该身份信息对应的订单金额是否已经被记录。

在一种实施方式中,为了提高数据表的查看和管理效率,以及为了更高效地管理待处理订单,身份信息可以包括至少两个身份子信息,不同的身份子信息对应于不同的身份描述角度。在这种情况下,利用身份信息搜索数据表,得到搜索结果的过程可以包括:

步骤41:判断数据表中是否存在与各个身份子信息均匹配的目标数据项。

步骤42:若存在,则确定搜索结果为命中。

步骤43:若不存在,则确定搜索结果为未命中。

具体的,可以依次选择一个身份子信息进行数据表的匹配,通过多轮匹配筛选的方式判断是否存在与各个身份子信息均匹配的目标数据项。示例性的,在网络直播带货的场景下,用户可以在不同的网络直播间中下单某商品,因此生成的订单信息中可以包括订单编号和直播间编号两个身份子信息。

此外,在另一种实施方式中,可以利用各个身份子信息共同生成特征值,例如哈希值,并利用该哈希值对数据表进行搜索。若搜索到相同的哈希值,则确定存在与各个身份子信息均匹配的目标数据项。目标数据项具体可以仅包括身份信息,或者还可以包括对应的订单金额。

S104:若搜索结果和状态信息不匹配,则根据订单金额,对数据表执行目标操作。

搜索结果表明了订单金额的当前记录情况,即已被记录或未被记录,状态信息表明了订单金额的目标记录情况,即应当被记录或不应当被记录。若搜索结果与状态信息不匹配,即应当被记录但没有记录,或不应被记录但已被记录,则需要根据订单金额,对数据执行目标操作。执行目标操作的过程即为对数据表进行修正的过程。

具体的,该步骤可以具体分为两种情况。第一种情况:

步骤51:若搜索结果为命中,且状态信息为订单无效状态,则确定不匹配。

步骤52:从数据表中减去订单金额。

若搜索结果为命中,说明该订单金额已经被记录入数据表,若状态信息为订单无效状态,则说明不应当被记录入数据表。在这种情况下可以确定二者不匹配,需要执行目标操作,目标操作具体为减少操作。因此从数据表中减去订单金额,具体可以从数据表中删除与身份信息对应的订单金额,或者可以从数据表的金额总数中减去订单金额。

此外,还可以有第二种情况:

步骤61:若搜索结果为未命中,且状态信息为订单有效状态,则确定不匹配。

步骤62:将订单金额加入数据表。

若搜索结果为未命中,说明该订单金额没有被记录入数据表,若状态信息为订单有效状态,则说明应当被记录入数据表。在这种情况下可以确定二者不匹配,需要执行目标操作,目标操作具体为增加操作。因此在数据表中加入订单金额,具体可以在数据表中新增与身份信息对应的订单金额,或者可以向数据表的金额总数增加订单金额。

需要说明的是,在一种实施方式中,各个消费者或者被指定进行订单处理的程序可以直接对数据表进行操作。在另一种实施方式中,消费者或者被指定的程序可以将订单金额、目标操作等发送给被指定进行数据表操作的目标程序进行处理。示例性的,可以利用返回值1表示增加、利用返回值-1表示减少,在确定二者不匹配后,根据目标操作的具体内容确定返回值,并将该返回值和订单金额发送给目标程序,以便目标程序对数据表执行目标操作。

可以理解的是,本实施例并没有限定若搜索结果与状态信息匹配时执行的步骤,例如可以为不执行任何步骤。示例性的,可以利用返回值0表示二者匹配,将该返回值发送给目标程序,目标程序将不执行任何操作。

应用本申请实施例提供的订单处理方法,利用卡夫卡中间件对订单进行处理后,得到对应的订单信息,其中进一步包括状态信息、订单金额和身份信息。可以理解的是,订单的状态可以表征订单的后续处理方式,例如在创建、付款、收货等状态下,订单对应的订单金额应当被统计,因为在上述状态下生成订单的用户会支付订单金额。而在退款等状态下,订单对应的订单金额不应当被通缉,因为用户不会支付订单金额。基于上述思路,则可以根据状态信息确定订单金额对应的目标操作,即应当统计或不应当统计该订单金额。在确定目标操作后,利用身份信息对数据表进行搜索,判断是否存在与该身份信息对应的数据项,即是否已经统计了该身份信息对应的订单金额。若搜索结果与状态信息满足与状态信息不符的执行条件,说明数据表没有对订单金额进行了正确地处理,即应当记录但没有记录,或不应当记录但记录了,因此根据订单金额对数据表执行目标操作,例如增加或删除。该方法通过将状态信息映射为目标操作,在保证了数据表的准确性和可靠性的前提下,无需对同一身份信息的各个订单进行排序后再进行处理,减少了排序过程,节省了计算资源的消耗,提高了订单处理速度。

下面对本申请实施例提供的订单处理装置进行介绍,下文描述的订单处理装置与上文描述的订单处理方法可相互对应参照。

请参考图2,图2为本申请实施例提供的一种订单处理装置的结构示意图,包括:

处理模块110,用于获取多个待处理订单,将待处理订单输入卡夫卡中间件,得到多个订单信息;各个订单信息包括状态信息、订单金额和身份信息;

操作确定模块120,用于利用状态信息确定订单金额对应的目标操作;

搜索模块130,用于利用身份信息搜索数据表,得到搜索结果;

执行模块140,用于若搜索结果和状态信息不匹配,则根据订单金额,对数据表执行目标操作。

可选地,处理模块110,包括:

随机输入单元,用于将各个待处理订单随机输入卡夫卡中间件的各个分区中,并利用各个分区对应的消费程序对待处理订单进行并行处理,得到订单信息。

可选地,还包括:

数量设置单元,用于响应于数量设置指令,将卡夫卡中间件中的分区的数量设置为目标数量。

可选地,操作确定模块120,包括:

增加确定单元,用于若状态信息为订单有效状态,则确定目标操作为增加操作;

减少确定单元,用于若状态信息为订单无效状态,则确定目标操作为减少操作。

可选地,执行模块140,包括:

第一确定单元,用于若搜索结果为命中,且状态信息为订单无效状态,则确定不匹配;

第一执行单元,用于从数据表中减去订单金额。

可选地,执行模块140,包括:

第二确定单元,用于若搜索结果为未命中,且状态信息为订单有效状态,则确定不匹配;

第二执行单元,用于将订单金额加入数据表。

可选地,搜索模块130,包括:

匹配判断单元,用于判断数据表中是否存在与各个身份子信息均匹配的目标数据项;

命中确定单元,用于若存在,则确定搜索结果为命中;

未命中确定单元,用于若不存在,则确定搜索结果为未命中。

下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的订单处理方法可相互对应参照。

请参考图3,图3为本申请实施例提供的一种电子设备的结构示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(I/O)接口104以及通信组件105中的一种或多种。

其中,处理器101用于控制电子设备100的整体操作,以完成上述的订单处理方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-OnlyMemory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。

多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi部件,蓝牙部件,NFC部件。

电子设备100可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的订单处理方法。

下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的订单处理方法可相互对应参照。

本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的订单处理方法的步骤。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120113791232