电子红包的发放方法、装置、服务器及可读存储介质
技术领域
本说明书实施例涉及数据处理技术领域,尤其涉及一种电子红包的发放方法、装置、服务器及可读存储介质。
背景技术
随着电子商务和网络消费的普及,网络平台已成为人们进行日常消费的一个重要工具。为了促进消费,商家常常需要进行线上营销推荐活动。其中,向终端用户发放电子红包的营销方式可以快速引起众多人的关注。因此,被越来越多的商家所重视。
现有的红包发放方案,基本上都采用同步领取流程方案,将领取过程拆分为红包抢占、金额过户、组装领取结果等流程进行发放,例如在黄金红包项目中,红包创建好之后发送到群里或者生成口令,终端用户根据口令或者直接在群里点击红包进行领取,领取有两种情况:第一种:终端用户领取成功,则终端用户抢占到该红包所对应的黄金金额,接下来会把红包发送者将终端用户所抢占的黄金金额过户给该终端用户,此时金额过户过程会涉及到金额的计减和金额的计增,还涉及到金额校验等流程;第二种:终端用户领取失败,由于一个红包可能有多个人领取,如此后面领取的终端用户会领取失败,此时提示终端用户领取失败,请重试。
发明内容
本说明书实施例提供了一种电子红包的发放方法、装置、服务器及可读存储介质,能够提高电子红包的发放效率,缩短终端用户领取电子红包的耗时。
本说明书实施例第一方面提供了一种电子红包的发放方法,包括:
获取到已创建的能被多个终端用户领取电子红包;
检测是否存在终端用户抢占了所述电子红包;
在每检测到一个终端用户抢占了所述电子红包时,将已领取了所述电子红包的领取结果返回给该终端用户,并从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功。
本说明书实施例第二方面提供了一种电子红包的发放装置,包括:
电子红包获取单元,用于获取到已创建的能被多个终端用户领取电子红包;
红包抢占检测单元,用于检测是否存在终端用户抢占了所述电子红包;
领取结果返回单元,用于在每检测到一个终端用户抢占了所述电子红包时,将已领取了所述电子红包的领取结果返回给该终端用户;
异步线程执行单元,用于在每检测到一个终端用户抢占了所述电子红包时,从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功。
本说明书实施例第三方面还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述电子红包的发放方法的步骤。
本说明书实施例第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时上述电子红包的发放方法的步骤。
本说明书实施例的有益效果如下:
基于上述技术方案,在每检测到一个终端用户抢占了电子红包时,将已领取了所述电子红包的领取结果返回给该终端用户,并从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功,如此,使得金额过户通过异步线程处理,不在红包发放的主流程中,而现有技术中金额过户位于红包发放的主流程中,且金额过户包括红包创建者的金额计减、红包领取者的金额计增和红包金额的核对等流程其耗时较大,而本说明书实施例将金额过户通过异步线程处理且金额过户流程不在红包发放的主流程中,如此,能够有效缩短终端用户领取电子红包的耗时。
附图说明
图1为本说明书实施例中电子红包的发放应用场景示意图;
图2为本说明书实施例中电子红包的发放方法的方法流程图;
图3为本说明书实施例中每隔设定时长将过户数据库中捞取状态为发放中的所有异步线程进行执行的方法流程图;
图4为本说明书实施例中以强制方式将超过预设次数的异步线程执行成功的方法流程图;
图5为本说明书实施例中电子红包的发放方法的整体流程图;
图6为本说明书实施例中电子红包的发放装置的结构示意图;
图7为本说明书实施例中服务器的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
请参见图1,为本说明书实施例的电子红包的发放应用场景示意图。终端100和服务器200。终端100中安装有能够进行电子红包分享的应用101,服务器200中设置有红包发放系统201,若终端100抢占了应用101中的电子红包之后,服务器200将终端100已领取了所述电子红包的领取结果返回给终端100,以及红包发放系统201用于从电子红包的总份额中确定与终端100对应的抢占金额,并为所述抢占金额在终端100中已创建的异步线程池中创建一个异步线程并执行成功,通过创建的异步线程执行成功完成金额过户,即将终端100对应抢占金额发放到终端100的账号中。
第一方面,如图2所示,本说明书实施例提供一种电子红包的发放方法,包括:
S202、获取到已创建的能被多个终端用户领取电子红包;
S204、检测是否存在终端用户抢占了所述电子红包;
S206、在每检测到一个终端用户抢占了所述电子红包时,将已领取了所述电子红包的领取结果返回给该终端用户,并从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功。
其中,在步骤S202中,在所述电子红包被终端所创建时,可以通过接收终端发放的创建所述电子红包的信息,从而获取到所述电子红包,也可以通过采集终端创建的所述电子红包的信息,从而获取到所述电子红包;在所述电子红包被服务器所创建时,直接读取创建的所述电子红包的信息,从而获取到所述电子红包。
本说明书实施例中,所述电子红包例如可以基金红包、礼券红包、基金红包等具有一定价值的电子券。
本说明书实施例中,多个指2个或2个以上,且所述电子红包能够被多个终端用户领取,例如,所述电子红包中的总金额为10元和红包个数为3;所述电子红包中的总金额还可以为8克黄金和总份额为8000份;所述电子红包中的总金额也可以为10000元基金和总份额为1000份等,使得所述电子红包能被多个终端用户领取。
例如,以终端100和服务器200为例,在终端用户A操作终端100在应用B中创建了一个能被多个终端用户领取的电子红包C,此时,终端100将创建的电子红包C的信息发送给服务器200,服务器200接收到电子红包C的信息,从而获取到电子红包C,其中,若C中包含总金额和红包个数,例如电子红包C中的总金额为100元和红包个数为10;当然,C中的总金额还可以为8克黄金和总份额为8000份。
接下来执行步骤S204,在该步骤中,在获取到所述电子红包之后,确定所述电子红包的领取方式,实时监测是否存在终端用户通过所述领取方式成功领取了所述电子红包,从而实现检测是否存在终端用户抢占了所述电子红包。其中,所述领取方式包括口令方式和点击方式等。
在具体实施例过程中,在所述电子红包创建好之后,若确定出所述电子红包的领取方式为口令方式,此时,实时监测是否存在终端用户通过与所述电子红包对应的口令成功领取了所述电子红包,在监测到终端用户通过与所述电子红包对应的口令成功领取了所述电子红包时,即检测到存在终端用户抢占了所述电子红包;如此,在每监测到一个终端用户通过与所述电子红包对应的口令成功领取了所述电子红包时,执行步骤S206;在监测到未存在终端用户成功领取了所述电子红包时,即检测到未存在终端用户抢占了所述电子红包,则禁止执行步骤S206。
其中,监测到未存在终端用户成功领取了所述电子红包时存在两种可能,一种是终端用户通过与所述电子红包对应的口令领取所述电子红包失败了,另一种是终端用户未通过与所述电子红包对应的口令领取所述电子红包。
例如,以终端用户A操作终端100在应用B中创建了电子红包C为例,电子红包C发送到应用B中的群D1中并生成了领取口令为xx,此时,群D1中存在多个终端用户包括A1、A2、A3、A4、A5和A6,实时监测A1、A2、A3、A4、A5和A6是否使用xx的口令成功领取了C;若监测到A3通过使用xx的口令成功领取了C,即检测到存在终端用户抢占了C,此时,针对A3执行步骤S206;以及在每监测到一个终端用户使用xx的口令成功领取了C时,执行步骤S206;若监测到A1、A2、A3、A4、A5和A6均未成功领取了C时,则禁止执行步骤S206。
具体来讲,在所述电子红包创建好之后,若确定出所述电子红包的领取方式为点击方式,此时,实时监测是否存在终端用户通过所述点击方式成功领取了所述电子红包,在监测到存在终端用户通过所述点击方式成功领取了所述电子红包时,即检测到存在终端用户抢占了所述电子红包;如此,在每监测到一个终端用户通过所述点击方式成功领取了所述电子红包时,执行步骤S206;在监测到未存在终端用户通过所述点击方式成功领取了所述电子红包时,即检测到未存在终端用户抢占了所述电子红包,则禁止执行步骤S206。
其中,监测到未存在终端用户成功领取了所述电子红包时存在两种可能,一种是终端用户通过所述点击方式领取所述电子红包失败了,另一种是终端用户未通过所述点击方式领取所述电子红包。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,此时,群D2中存在多个终端用户包括A11、A12、A13、A14、A15和A16,实时监测A11、A12、A13、A14、A15和A16是否通过点击C而成功领取了C;若监测到A12点击C并成功领取了C,即检测到存在终端用户抢占了C,此时,针对A12执行步骤S206;以及在每监测到一个终端用户通过点击C而成功领取了C时,执行步骤S206;若监测到A11、A12、A13、A14、A15和A16均未成功领取了C时,则禁止执行步骤S206。
在每检测到一个终端用户抢占了所述电子红包时,执行步骤S206,在该步骤中,在每检测到一个终端用户抢占了所述电子红包时,直接将已领取所述电子设备的领取结果返回给该终端用户,并通过成功执行异步线程来为该终端用户对应的抢占金额将所述抢占金额过户给该终端用户。
本说明书实施例中,在电子红包的发放流程中,只要终端用户抢占了所述电子红包,那么终端用户对应的抢占金额一定会过户成功,所以可以通过异步线程对每个终端用户对应的抢占金额完成金额过户,使得金额过户流程不在电子红包发放的主流程中,所以用户能感知到的领取耗时只包括红包抢占、返回领取结果这两个流程,而且由于金额过户包括红包创建者的金额计减、红包领取者的金额计增和红包金额的核对等流程其耗时较大,如此,能够有效缩短终端用户领取电子红包的耗时,使得用户的体验更好。
本说明书实施例中,所述抢占金额可以为金钱、黄金、基金等。例如C中的总金额为100元和红包个数为10,此时A1对应的抢占金额例如为2、3、5元等,A1对应的抢占金额小于100元;若例如C中的总金额为黄金8克和总份额为8000份,此时A1对应的抢占金额例如为0.02、0.3、0.05克黄金等,A1对应的抢占金额小于8克黄金。
具体来讲,在从所述电子红包的总金额中确定出与每个终端用户对应的抢占金额时,存在至少两种情况,其中一种情况是每个终端用户对应的抢占金额是相同的;另一种情况是每个终端用户对应的抢占金额是随机金额;在每个终端用户对应的抢占金额是相同时,例如C中的总金额为100元和红包个数为10时,每个终端用户对应的抢占金额均是10元;在每个终端用户对应的抢占金额是随机金额时,每两个终端用户对应的抢占金额可以是相同金额或不同金额,例如,C中的总金额为100元和红包个数为10时,此时,A1对应的抢占金额可以为5.2元,A2对应的抢占金额为55.8元,A3对应的抢占金额为22元。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,若C中的总金额为100、红包个数为10且每个红包对应的金额固定为10元,此时,在10点15分时检测到A11点击并领取了C时,确定出A11对应的抢占金额为10元,在服务器200中创建一个用于为A11进行金额过户的异步线程Z11并执行;以及在1O点17分检测到A14点击并领取了C时,确定出A14对应的抢占金额为10元,在服务器200中创建一个用于为A14进行金额过户的异步线程Z14并执行;针对每个领取C的终端用户执行上述操作,直至C中的所有红包领取完成或C的创建时间结束为止。
其中,若C中的总金额为100、红包个数为10且每个红包对应的金额为随机金额,此时,在10点15分时检测到A11点击并领取了C时,确定出A11对应的抢占金额为6.8元,在服务器200中创建一个用于为A11进行金额过户的异步线程Z11并执行;以及在1O点17分检测到A14点击并领取了C时,确定出A14对应的抢占金额为32.2元,在服务器200中创建一个用于为A14进行金额过户的异步线程Z14并执行;针对每个领取C的终端用户执行上述操作,直至C中的所有红包领取完成或C的创建时间结束为止。
在本说明书实施例中,在检测是否存在终端用户抢占了所述电子红包之后,在每检测到一个终端用户抢占了所述电子红包时,从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,可以直接在进程中为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功;也可以开启异步线程池,并在所述异步线程池中为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功。
本说明书实施例中,针对与每个终端用户对应的异步线程,在异步线程执行失败时可以通过不断重复执行该异步线程直至执行成功为止;还可以在异步线程执行失败时通过强制方式将该异步线程执行成功。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,若C中的总金额为100、红包个数为10且每个红包对应的金额为随机金额,此时,在10点15分时检测到A11点击并领取了C之后,开启异步线程池Z,以及确定出A11对应的抢占金额为6.8元,在Z中创建一个用于为A11进行金额过户的异步线程Z11并执行成功;以及在1O点17分检测到A14点击并领取了C时,确定出A14对应的抢占金额为32.2元,在Z中创建一个用于为A14进行金额过户的异步线程Z14并执行成功;针对每个领取C的终端用户执行上述操作,直至C中的所有红包领取完成或C的创建时间结束为止。
在具体实施过程中,在为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功过程中,还可以实时检测抢占了所述电子红包的每个终端用户对应的异步线程是否执行成功;在每检测到一个终端用户对应的异步线程执行成功时,将该终端用户的抢占金额发放给该终端用户。
本说明书实施例中,抢占所述电子红包的终端用户数量越多,在所述异步线程池中创建的异步线程的数量也随之增多,而所述异步线程池中的异步线程可以并发执行,如此,能够进一步提高异步线程的执行效率,使得通过异步线程进行金额过户流程的处理效率也随之提高。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,若C中的总金额为100、红包个数为10且每个红包对应的金额为随机金额,此时,在10点15分时检测到A11点击并领取了C之后,开启异步线程池Z,以及确定出A11对应的抢占金额为6.8元,在Z中创建一个用于为A11进行金额过户的异步线程Z11然后执行,此时在Z11执行过程中,需要对C进行金额计减操作,得到C的剩余金额为100-6.8=93.2;对A11进行金额计增操作,得到A11对应的抢占金额为6.8;以及进行金额核对操作,计算C的剩余金额与A11对应的抢占金额之和是否为100,若是,则金额核对成功,若否,则重新执行金额过户流程,直至金额核对成功;在执行Z11完成金额核对成功之后,将6.8发放给A11,从而确定Z11执行成功,此时,会将6.8发放给A11,此时,通常将6.8发放到A11的账户中;若Z11执行失败,则不断重复执行Z11直至Z11执行成功。
进一步地,以及在1O点17分检测到A14点击并领取了C时,确定出A14对应的抢占金额为32.2元,在Z中创建一个用于为A14进行金额过户的异步线程Z14并执行;此时在Z11执行过程中,需要对C进行金额计减操作,得到C的剩余金额为100-6.8=93.2;对A11进行金额计增操作,得到A11对应的抢占金额为6.8;以及进行金额核对操作,计算C的剩余金额与A11对应的抢占金额之和是否为100,若是,则金额核对成功,若否,则重新执行金额过户流程,直至金额核对成功;在执行Z11完成金额核对成功之后,将6.8过户给A11中,通过检测6.8是否过户给A11来检测Z11是否执行成功。若检测到6.8过户给A11时即检测到Z11执行成功,此时,会将6.8发放给A11,此时,通常将6.8发放到A11的账户中;若检测到6.8未过户给A11时即检测到Z11未执行成功,则不断重复执行Z11直至Z11执行成功。
进一步地,以及在1O点17分检测到A14点击并领取了C时,确定出A14对应的抢占金额为32.2元,在Z中创建一个用于为A14进行金额过户的异步线程Z14并执行;此时在Z14执行过程中,需要对C进行金额计减操作,得到C的剩余金额为93.2-32.2=61;对A14进行金额计增操作,得到A14对应的抢占金额为32.2;以及进行金额核对操作,计算C的剩余金额、A11对应的抢占金额与A14对应的抢占金额之和是否为100,若是,则金额核对成功,若否,则重新执行金额过户流程,直至金额核对成功;在执行Z14完成金额核对成功之后,通过检测32.2是否过户给A14来检测Z14是否执行成功。若检测到32.2过户给A14时即检测到Z14执行成功,此时,会将32.2发放给A14,此时,通常将32.2发放到A14的账户中;若检测到32.2未过户给A14时即检测到Z14未执行成功,则不断重复执行Z14直至Z14执行成功。
如此,在通过异步线程对每个终端用户对应的抢占金额进行金额过户时,需要进行的流程至少包括对所述电子红包的金额计减、对终端用户进行金额计增和金额核对的流程,由此可知,在红包发放流程中金额过户流程进行数据处理的数据量最大且步骤也最多,使得金额过户流程在红包发放流程中耗费的时间最多,而金额过户流程通过异步线程处理,使得金额过户流程不在红包发放的主流程中,且异步处理能够提高服务器的使用率并在宏观上提升异步线程的运行效率,如此,通过异步线程对金额过户流程进行异步处理能够有效提高金额过户的处理效率,如此,使得电子红包的发放效率也随之提高,从而实现缩短终端用户领取电子红包的耗时的效果。
而且,针对每个终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功,使得每个终端用户对应的抢占金额最后都会过户到对应的终端用户中,防止出现终端用户对应的抢占金额未发放的问题。
本说明书的另一实施例中,在开启异步线程池之后,所述方法还包括:
创建与所述异步线程池对应的过户数据库,所述过户数据库中存储有所述异步线程池中每个异步线程的状态,其中,每个异步线程的状态包括发放中或发放成功,若一个异步线程的状态为发放中表征该异步线程未执行成功,若一个异步线程的状态为发放成功表征该异步线程已执行成功。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,若C中的总金额为100、红包个数为10且每个红包对应的金额为随机金额,此时,在10点15分时检测到A11点击并领取了C之后,开启异步线程池Z并创建与Z对应的过户数据库DB;然后在Z中创建Z11用于为A11进行金额过户,然后执行Z11;此时,DB中存储有Z11的状态,在Z11未执行或执行未成功时,DB中存储的Z11的状态为发放中;在Z11中执行成功时,DB中存储的Z11的状态为发放成功。
本说明书的另一实施例中,在创建与所述异步线程池对应的过户数据库之后,如图3所示,所述方法还包括:
S301、每隔设定时长从所述过户数据库中捞取状态为发放中的所有异步线程;
S302、执行捞取出的每个异步线程,得到捞取出的每个异步线程的执行结果;
S303、根据捞取出的每个异步线程的执行结果,对所述过户数据库中捞取出的每个异步线程的状态进行调整。
在具体实施过程中,所述设定时长可以根据服务器或人工进行设定,所述设定时长例如可以为1秒(s),0.5s和2s等,由于所述过户数据库中存储有每个异步线程的状态,在一个异步线程的状态为发放中时表征该异步线程未执行成功,在一个异步线程的状态为发放成功时表征该异步线程执行成功,如此,每隔设定时长从所述过户数据库中捞取状态为发放中的所有异步线程时,即每个设时长从所述过户数据库中捞取所有未执行成功的所有异步线程,然后执行每个未执行成功的所有异步线程,然后根据每个未执行成功的所有异步线程的执行结果,对所述过户数据库中捞取出的每个异步线程的状态进行调整;若捞取出的某个异步线程的执行结果显示执行成功,则执行步骤S210,并在所述过户数据库中将捞取出的该异步线程的状态从发放中调整为发放成功;若捞取出的某个异步线程的执行结果显示执行失败,则在所述过户数据库中将捞取出的该异步线程的状态不进行调整,继续显示为发放中。
例如,以异步线程池Z为例,若Z中存储有Z11、Z12、Z13、Z14、Z15和Z16,若所述设定时长为1分钟,则每隔1分钟从Z中捞取状态为发放中的所有异步线程,例如创建Z的时间为10:15:00秒,则间隔1分在10:16:00秒从Z中捞取状态为发放中的所有异步线程,此时若Z中的Z11、Z13、Z14和Z16的状态均为发放成功,以及Z12和Z15的状态为发放中,则在10:16:00秒从Z捞取状态为发放中的所有异步线程为Z12和Z15,然后执行Z12和Z15,得到Z12的执行结果和Z15的执行结果;若Z12的执行结果表征执行成功且Z15的执行结果表征执行失败,则在Z中将Z12的状态从发放中调整为发放成功,并将Z12对应的抢占金额发放给对应的终端用户,以及在Z中将Z15的状态不进行调整,继续保持为发放中。
接着,在10:17:00秒从Z中捞取状态为发放中的所有异步线程,此时Z中存储有Z11、Z12、Z13、Z14、Z15、Z16、Z17和Z18且仅Z15和Z17的状态为发放中而其它异步线程的状态均为发放成功,则在10:17:00秒从Z捞取状态为发放中的所有异步线程为Z15和Z17,然后执行Z15和Z17,得到Z15的执行结果和Z17的执行结果;若Z15和Z17的执行结果均表征执行成功,则在Z中将Z15和Z17的状态从发放中调整为发放成功,并将Z15对应的抢占金额发放给对应的终端用户,以及将Z17对应的抢占金额发放给对应的终端用户。
如此,通过步骤S301-S303,每隔设定时长将所述过户数据库中未执行完成的每个异步线程执行一次,通过此种方式能够促使所述过户数据库中的未执行完成的每个异步线程均能再次执行,降低所述异步线程池中未执行成功的异步线程长时间为执行概率,从而提高异步线程执行成功的效率,在异步线程执行成功的效率提高的基础上会促使电子红包的发放效率也随之提高,从而实现缩短终端用户领取电子红包的耗时的效果。
本说明书另一实施例中,所述为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功,如图4所示,具体包括:
S401、在每隔设定时长从所述过户数据库中捞取状态为发放中的所有异步线程之后,获取捞取出的每个异步线程对应的捞取次数;
S402、检测捞取出的每个异步线程对应的捞取次数是否超过预设次数;
S403、在检测到捞取出的某个异步线程对应的捞取次数超过所述预设次数时,以强制方式将超过所述预设次数的异步线程执行成功。
本说明书实施例中,在检测到捞取次数未超过所述预设次数对应的所有捞取出的异步线程时,针对捞取次数未超过所述预设次数对应的所有捞取出的异步线程,执行步骤S302-S303。
在该实施例中,所述预设次数可以根据服务器或人工进行设定,所述预设次数通常为大于2的整数,例如为10、15和20等。当然,所述预设次数也可以设置为不小于1的整数,本说明书实施例不作具体限制。
本说明书实施例中,所述强制方式包括人工介入方式,以强制方式将超过所述预设次数的异步线程执行成功时,能够确保超过所述预设次数的异步线程执行成功,从而完成金额过户流程。
而在电子红包发放流程中需要确保金额过户成功,如此,通过步骤S401-S403创建一个守护机制,确保使用金额过户流程成功将金额过户,从而提高异步线程执行成功的效率。
例如,以异步线程池Z为例,在10:19:00秒从Z中捞取状态为发放中的所有异步线程,此时Z中存储有Z11、Z12、Z13、Z14、Z15、Z16、Z17、Z18、Z19和Z20,且仅Z15、Z17和Z20的状态为发放中,而其它异步线程的状态均为发放成功,获取Z15、Z17和Z20对应的捞取次数依次为15、4和1,若所述预设次数为10,由于15>10>4>1,则通过人工介入方式将Z15执行成功;以及通过服务器来执行Z17和Z20,得到Z17的执行结果和Z20的执行结果;若Z17和Z20的执行结果均表征执行成功,则在Z中将Z17和Z20的状态从发放中调整为发放成功,并将Z17对应的抢占金额发放给对应的终端用户,以及将Z20对应的抢占金额发放给对应的终端用户。
在本说明书另一实施例中,在将已领取了所述电子红包的领取结果返回给该终端用户时,所述方法还包括:获取所述电子红包的已发放信息,在将已领取了所述电子红包的领取结果返回给该终端用户时还将所述已发放信息返回给该终端用户。
本说明书实施例中,所述已发放信息包括终端用户的抢占金额、红包已领金额、红包已领个数等信息中一个或多个信息。
例如,以A操作终端100在应用B中创建了C为例,C发送到应用B中的群D2中由终端用户点击领取,若C中的总金额为100、红包个数为10且每个红包对应的金额为随机金额,此时,在10点15分时检测到A11点击并领取了C之后,获取C中已领取的红包个数,已领取的红包金额和6.8封装在一起组成已发放信息,然后将已领取了所述电子红包的领取结果和已发放信息返回给A11。
如此,在将已领取了所述电子红包的领取结果返回给该终端用户时,还将所述电子红包的已发放信息也返回给对应的终端用户,能够使得终端用户能够获取到所述电子红包发放的更多信息,使得用户的体验更好。
本说明书的另一实施例中,所述电子红包的发放方法的整体流程具体如图5所示,其整体流程如下:
第一、创建电子红包,在所述电子红包创建好之后,等待终端用户领取,并创建过户数据库;
第二、终端用户点击领取所述电子红包,开始红包抢占流程,如果抢占成功,则将过户数据库中将终端用户的状态调整为发放中;如果抢占失败,则给终端用户发放领取失败信息;
第三、在终端用户抢占成功时,直接将已领取了所述电子红包的领取结果返回给该终端用户,并开启异步线程池,在异步线程池中为每个终端用户的抢占金额开启一个用于进行金额过户流程的异步线程并执行成功,其中,创建的异步线程用于进行金额过户流程。
第四,在通过创建的异步线程用于进行金额过户流程时,如果金额过户流程完成了金额过户,即过户成功,则将过户数据库中将终端用户的状态调整为发放成功,此时,终端用户的抢占金额已放入到终端用户的账户中;如果金额过户流程未完成金额过户即金额过户失败,则不断重新进行金额过户流程直至金额过户成功,在不断重新进行金额过户流程时可以通过步骤S206或步骤S401-S402完成金额过户。
如此,在金额过户异步化之后,由于金额过户是一个异步线程处理,不在红包发放的主流程之内,使得终端用户能感知到的领取耗时为红包抢占、返回领取结果的流程。由于红包领取耗时较大的模块主要是金额过户模块(包括红包创建者的金额计减,红包领取者的金额计增,红包金额的核对),所以将金额过户异步化可以极大缩减红包领取的耗时。
第二方面,基于与第一方面的同一发明构思,本说明书实施例提供一种电子红包的发放装置,如图6所示,包括:
电子红包获取单元601,用于获取到已创建的能被多个终端用户领取电子红包;
红包抢占检测单元602,用于检测是否存在终端用户抢占了所述电子红包;
领取结果返回单元603,用于在每检测到一个终端用户抢占了所述电子红包时,将已领取了所述电子红包的领取结果返回给该终端用户;
异步线程执行单元604,用于在每检测到一个终端用户抢占了所述电子红包时,从所述电子红包的总金额中确定出与该终端用户对应的抢占金额,为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行;
在一种可选方式中,异步线程执行单元604,具体用于开启异步线程池,并在所述异步线程池中为该终端用户对应的抢占金额创建一个用于金额过户的异步线程并执行成功。
在一种可选方式中,所述发放装置还包括:
数据库创建单元,用于在开启异步线程池之后,创建与所述异步线程池对应的过户数据库,所述过户数据库中存储有所述异步线程池中每个异步线程的状态,其中,每个异步线程的状态包括发放中或发放成功,若一个异步线程的状态为发放中表征该异步线程未执行成功,若一个异步线程的状态为发放成功表征该异步线程已执行成功。
在一种可选方式中,所述发放装置还包括:
线程捞取单元,用于在创建与所述异步线程池对应的过户数据库之后,每隔设定时长从所述过户数据库中捞取状态为发放中的所有异步线程;
第一线程执行单元,用于执行捞取出的每个异步线程,得到捞取出的每个异步线程的执行结果;
线程状态调整单元,用于根据捞取出的每个异步线程的执行结果,对所述过户数据库中捞取出的每个异步线程的状态进行调整。
在一种可选方式中,所述异步线程执行单元,还包括:
捞取次数获取单元,用于在每隔设定时长从所述过户数据库中捞取状态为发放中的所有异步线程之后,获取捞取出的每个异步线程对应的捞取次数;
捞取次数检测单元,用于检测捞取出的每个异步线程对应的捞取次数是否超过预设次数;
第二线程执行单元,用于在检测到捞取出的某个异步线程对应的捞取次数超过所述预设次数时,以强制方式将超过所述预设次数的异步线程执行成功。
第七方面,基于与前述实施例中电子红包的发放方法同样的发明构思,本说明书实施例还提供一种移动终端,如图7所示,包括存储器704、处理器702及存储在存储器704上并可在处理器702上运行的计算机程序,所述处理器702执行所述程序时实现前文所述电子红包的发放的任一方法的步骤。
其中,在图7中,总线架构(用总线700来代表),总线700可以包括任意数量的互联的总线和桥,总线700将包括由处理器702代表的一个或多个处理器和存储器704代表的存储器的各种电路链接在一起。总线700还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口705在总线700和接收器701和发送器703之间提供接口。接收器701和发送器703可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器702负责管理总线700和通常的处理,而存储器704可以被用于存储处理器702在执行操作时所使用的数据。
第四方面,基于与前述实施例中电子红包的发放方法的发明构思,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述电子红包的发放方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。