账户数据处理方法、装置、电子设备和存储介质
技术领域
本发明实施例涉及数据处理
技术领域
,尤其涉及一种账户数据处理方法、装置、电子设备和存储介质。背景技术
随着短视频、直播等社交应用程序的普及,为了更好地通过社交应用程序实现社交活动,社交应用程序提供充值功能,用户充值后获得虚拟货币,以消费虚拟货币后享受更多个性化的社交服务。
目前,对于用户的账户,每当用户充值使得账户的虚拟货币的余额增加时,为了保护账户安全,在账户的总余额增加时,通常冻结新增的虚拟货币为不可用状态,在新增的虚拟货币的冻结期结束后解冻此部分虚拟货币变为可用状态。然而,在存在冻结期的虚拟货币的情况下统计账户的可用余额时,目前主要是通过定时跑脚本,遍历账户的所有历史流水,从历史流水中确定出每一笔被冻结的余额,然后计算账户截止到确定时间的、除了冻结的虚拟货币之后的实际余额作为账户的可用余额中。
综上所述,现有获取账户可用余额的方法,需要存储和遍历账户的所有历史流水来确定处于冻结期的虚拟货币,耗时长,无法获得账户的实时可用余额。
发明内容
本发明实施例提供一种账户数据处理方法、装置、电子设备和存储介质,以解决现有技术中账户存在冻结货币的情况下,需要存储和遍历账户的所有历史流水来确定处于冻结期的虚拟货币,导致获取账户的可用余额存在耗时长、无法获得账户的实时可用余额的问题。
第一方面,本发明实施例提供了一种账户数据处理方法,包括:
在账户的虚拟货币的余额增加时,获取所述余额增加时的目标时间和所增加的余额的第一余额增量;
确定所述目标时间所属的结存周期;
将所述第一余额增量累加到所述账户在所述结存周期内的第二余额增量中;
在以所述结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为所述第二余额增量的虚拟货币;
当接收到针对所述账户的余额的业务处理请求时,基于所述第二余额增量响应所述业务处理请求。
第二方面,本发明实施例提供了一种账户数据处理装置,包括:
时间和余额增量获取模块,用于在账户的虚拟货币的余额增加时,获取所述余额增加时的目标时间和所增加的余额的第一余额增量;
结存周期确定模块,用于确定所述目标时间所属的结存周期;
余额增量累加模块,用于将所述第一余额增量累加到所述账户在所述结存周期内的第二余额增量中;
冻结模块,用于在以所述结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为所述第二余额增量的虚拟货币;
业务请求响应模块,用于当接收到针对所述账户的余额的业务处理请求时,基于所述第二余额增量响应所述业务处理请求。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个计算机程序,
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明第一方面所述的账户数据处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明第一方面所述的账户数据处理方法。
本发明实施例在账户的虚拟货币的余额增加时,获取余额增加时的目标时间和所增加的余额的第一余额增量,并确定目标时间所属的结存周期,将第一余额增量累加到账户在结存周期内的第二余额增量中,并在以结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为第二余额增量的虚拟货币,当接收到针对账户的余额的业务处理请求时,基于第二余额增量响应业务处理请求,实现了账户的余额增加时更新对应的结存周期的新增余额,并冻结该结存周期所增加的余额,以在接收到针对账户的可用余额、扣除余额等业务处理请求时,能够获取到账户所有的冻结的余额,基于该冻结的余额来计算可用余额、扣除余额等,无需存储和遍历账户的历史流水来获取冻结的余额,能够快速通过冻结的余额来计算可用余额,耗时短,可以获得账户的实时可用余额。
附图说明
图1是本发明实施例一提供的一种账户数据处理方法的步骤流程图;
图2是本发明实施例二提供的一种账户数据处理方法的步骤流程图;
图3是本发明实施例三提供的一种账户数据处理装置的结构框图;
图4是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合。
实施例一
图1为本发明实施例一提供的一种账户数据处理方法的步骤流程图,本发明实施例可适用于账户存在冻结余额时响应业务处理请求的情况,该方法可以由本发明实施例的账户数据处理装置来执行,该账户数据处理装置可以由硬件或软件来实现,并集成在本发明实施例所提供的电子设备中,具体地,如图1所示,本发明实施例的账户数据处理方法可以包括如下步骤:
S101、在账户的虚拟货币的余额增加时,获取所述余额增加时的目标时间和所增加的余额的第一余额增量。
在本发明实施例中,账户的余额可以是虚拟货币的余额,示例性地,用户在短视频平台、语音平台、直播平台等社交平台上充值后可以获得虚拟货币,用户所拥有的虚拟货币的数量即为用户的账户的余额,用户通过消费虚拟货币可以获得相应的服务。
对于账户的余额,当该账户的用户消费或者充值时,该账户的余额发生变化,系统记录余额发生变化时的时间和变化后的余额值,具体到本发明实施例中,可以关注账户的余额增加,即检测账户的余额是否增加,当账户的余额增加时,记录余额增加时的时间作为目标时间,以及将本次检测到的、所增加的虚拟货币的数量作为第一余额增量。
S102、确定所述目标时间所属的结存周期。
在本发明实施例中,结存周期可以是用来记录账户的余额增加的周期,即在该结存周期内将账户所增加的余额进行累加,在一个示例中,结存周期可以以月、天、小时等为单位,本发明实施例对结存周期的周期长不加以限制。
以结存周期为1天作为示例,目标时间所属的结存周期即为该目标时间所在的自然日,如2021年7月5日10:30余额增加100金币,则余额增加的目标时间为2021年7月5日10:30,第一余额增量为100,目标时间2021年7月5日10:30所属的结存周期为2021年7月5日00:00-2021年7月5日24:00。
S103、将所述第一余额增量累加到所述账户在所述结存周期内的第二余额增量中。
在本发明实施例中,对于每个账户,如果在结存周期内账户余额增加时可以维护余额数据表,该余额数据表用于记录账户的Uid、虚拟货币类型、结存周期、第二余额增量、更新时间等信息,其中,第二余额增量为该结存周期内账户所增加的虚拟货币的总量,更新时间为最近一次余额增加的时间。
在结存周期内每检测到一次账户的余额增加,则将增加的虚拟货币的第一余额增量累加到第二余额增量中得到新的第二余额增量,并将更新时间修改为余额增加的目标时间。
S104、在以所述结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为所述第二余额增量的虚拟货币。
结存周期的周期开始时间为每个结存周期的起算时间,在一个示例中,结存周期为1个月,则结存周期的周期开始时间为每个月1日的00:00:00,同理,结存周期为1天,则结存周期的周期开始时间为每天的00:00:00,结存周期为1小时,则结存周期的周期开始时间为每个小时的0分0秒。
虚拟货币冻结设置有冻结期,不同类型的虚拟货币可以设置不同冻结时长的冻结期,在结存周期开始时,可以以结存周期的周期开始时间为冻结期的冻结起始时间,冻结该结存周期内所增加的虚拟货币,即冻结额度为第二余额增量的虚拟货币,被冻结的虚拟货币为不可用的虚拟货币,记入账户的总余额中,不记入账户的可用余额中,直到冻结期结束之后被冻结的虚拟货币转为可用虚拟货币。
S105、当接收到针对所述账户的余额的业务处理请求时,基于所述第二余额增量响应所述业务处理请求。
针对账户的余额的业务处理请求可以是可用余额查询请求、余额扣除请求等,当业务处理请求为针对账户的可用余额查询请求时,可以获取账户的总余额,并且在账户存在冻结的虚拟货币时,可以计算所有处于冻结期的虚拟货币的第二余额增量的和值得到冻结余额,计算总余额和冻结余额的差值作为账户的可用余额,将该可用余额发送到业务端。或者当业务处理请求为针对账户的余额扣除请求时,在获得账户的可用余额后,比较可用余额和扣除余额的大小,如果可用余额大于扣除余额,则直接扣除,否则提示可用余额不足的信息。
本发明实施例在账户的虚拟货币的余额增加时,获取余额增加时的目标时间和所增加的余额的第一余额增量,并确定目标时间所属的结存周期,将第一余额增量累加到账户在结存周期内的第二余额增量中,并在以结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为第二余额增量的虚拟货币,当接收到针对账户的余额的业务处理请求时,基于第二余额增量响应业务处理请求,实现了账户的余额增加时更新对应的结存周期的新增余额,并冻结该结存周期所增加的余额,以在接收到针对账户的可用余额、扣除余额等业务处理请求时,能够获取到账户所有的冻结的余额,基于该冻结的余额来计算可用余额、扣除余额等,无需存储和遍历账户的历史流水来获取冻结的余额,能够快速通过冻结的余额来计算可用余额,耗时短,可以获得账户的实时可用余额。
实施例二
图2为本发明实施例二提供的一种账户数据处理方法的步骤流程图,本发明实施例在前述实施例一的基础上进行优化,具体地,如图2所示,本发明实施例的账户数据处理方法可以包括如下步骤:
S201、在账户的虚拟货币的余额增加时,获取所述余额增加时的目标时间和所增加的余额的第一余额增量。
在本发明实施例中,账户的余额可以是虚拟货币的余额,示例性地,用户在短视频平台、语音平台、直播平台等社交平台上充值后可以获得虚拟货币,用户所拥有的虚拟货币的数量即为用户的账户的余额,用户通过消费虚拟货币可以获得相应的服务。
在本发明的可选实施例中,可以对账户进行检测以确定是否发生预设事件,预设事件可以是针对账户的虚拟货币增加请求,若是,则确定账户的虚拟货币的余额增加,可以获取针对账户的虚拟货币增加请求的请求时间和请求增加的虚拟货币的目标数量,将请求时间确定为余额增加时的目标时间,以及将目标数量确定为所增加的余额的第一余额增量。
其中,预设事件为针对账户的虚拟货币增加请求,示例性地,预设事件可以是用户的充值操作事件,或者是账户之间的转账事件(转入),还可以是系统对账户发放虚拟货币奖励事件等,本发明实施例对预设事件不作限制。本发明实施例通过检测预设事件来确定账户的余额是否增加,相对于检测账户余额的数值变化,可以避免余额减少所带来的检测量,可以更为准确地检测到账户的余额增加。
在一个示例中,可以对指定类型的虚拟货币进行冻结,在检测到预设事件后,可以获取虚拟货币的类型,在类型为指定类型时,获取针对账户的虚拟货币增加请求的请求时间和请求增加的虚拟货币的目标数量,将请求时间确定为余额增加时的目标时间,以及将目标数量确定为所增加的余额的第一余额增量。例如,虚拟货币的类型可以包括铜币、银币、金币、黄钻、红钻等,可以设置金币、黄钻、红钻为指定类型,从而实现了在虚拟货币为指定类型时获取余额增加时的目标时间和所增加的余额的第一余额增量,即可以对增加的指定类型的虚拟货币冻结。
S202、确定所述目标时间所属的结存周期。
在本发明实施例中,结存周期可以是用来记录账户的余额增加的周期,即在该结存周期内将账户所增加的余额进行累加。在获取到余额增加时的目标时间后,可以获取每个结存周期的时间段,从多个时间段中确定出包含目标时间的目标时间段,目标时间段对应的结存周期确定为所述目标时间所属的结存周期。
示例性地,结存周期为1天,则每个结存周期对应有一个时间段,即结存周期当天的00:00-24:00,如果2021年7月6日13:00增加余额100红钻,则新增的100红钻的目标时间为2021年7月6日13:00,该目标时间落在2021年7月6日所在的结存周期的时间段2021年7月6日00:00-24:00内,则可以确定新增的100红钻所在的结存周期为2021年7月6日。
上述以结存周期为1天说明了确定目标时间所属的结存周期,对于结存周期为1个小时、1个星期、1个月时,可以参考结存周期为1天来确定目标时间所属的结存周期。
S203、将所述第一余额增量累加到所述账户在所述结存周期内的第二余额增量中。
示例性地,对于每个账户,可以维护每个结存周期的余额数据表如下表1:
字段名
字段含义
Uid
账户id
Vmtype
虚拟货币类型
Period
统计余额增加的周期
Balance
结存周期内增加的余额的总量
Utime
结存周期内最后一次增加余额的时间
以账户uid=12345,货币类型vm_type=1作为示例,该账户原有虚拟货币数量是100个,2021-04-22 13:00第一次获得10个虚拟货币,虚拟货币总余额变为110,则生成表1如下:
当账户在2021-04-22 23:00再获得20个虚拟货币,虚拟货币总余额变成130,更新上表1如下:
字段名
字段含义
Uid
12345
Vmtype
1
Period
2021-04-22
Balance
30(第二余额增量)
Utime
2021-04-22 23:00
即在2021-04-22这个结存周期内,账户Uid=12345新增了两次余额,将两次新增的余额进行了累加作为结存周期的第二新增余额,亦即结存周期内账户新增的虚拟货币的总数量。
S204、在以所述结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为所述第二余额增量的虚拟货币。
在本发明的可选实施例中,对于结存周期内新增的、额度为第二余额增量的虚拟货币,可以获取虚拟货币的类型,并在预先设置的类型-冻结时长表中查找与该类型匹配的冻结时长,将结存周期的周期开始时间确定为冻结起始时间,并计算周期开始时间和冻结时长的和值得到冻结结束时间,冻结起始时间到冻结结束时间的时间段内,将账户中额度为第二余额增量的虚拟货币设置为冻结状态,以及在当前时间为冻结结束时间时,解冻额度为第二余额增量的虚拟货币。
示例性地,假设账户在2021-07-06新增了50个红钻,可以先查找到红钻的冻结期为3天,则在2021-07-06 00:00开始冻结50个红钻,并以2021-07-06 00:00为冻结开始时间,以3天为冻结时长计算得到冻结结束时间为2021-07-09 00:00,在2021-07-06 00:00到2021-07-09 00:00的冻结期内,50个红钻被冻结处于不可用状态,直到2021-07-09 00:00时解冻50个红钻。在一个示例中,冻结虚拟货币可以是维护结存周期的余额数据表,解冻可以是销毁该结存周期的余额数据表,例如,对于每个结存周期,如果新增余额则建立该结存周期的余额数据表并开始冻结该结存周期所增加的虚拟货币,在冻结期结束时则销毁该结存周期的余额数据表。
本发明实施例对于每个结存周期所增加的虚拟货币维护一个余额数据表,以此来记录每个结存周期所冻结的虚拟货币的数量,如果通过账户Uid查找到余额数据表,可以表明账户存在冻结的余额,无需存储和遍历账户的所有历史流水来确定账户每笔增加的虚拟货币是否处于冻结状态,确定账户冻结的虚拟货币的耗时短。
S205、当接收到业务端的可用余额查询请求时,获取所述账户的总余额。
在本发明的一个可选实施例中,针对账户的余额的业务处理请求可以是可用余额查询请求,在一个场景中,业务端可以是用户所登录的客户端,例如,客户端可以是短视频、语音、直播等客户端,客户端在接收到用户的可用余额查询操作后生成可用余额查询请求,在另一个场景中,业务端还可以是短视频、语音、直播等平台的运维人员所登录的管理平台,运维人员登录管理平台后,可以在管理平台上操作导出各个账户的可用余额,则业务端生成可用余额查询请求。
其中,账户的总余额是账户的瞬时余额,即该瞬时余额可以是账户在某一时刻的总余额,该总余额实时更新并存储在服务器中,在一个示例中,可以对每个账户维护一个总余额表,在账户有新增余额或扣除余额时实时更新总余额表,以确定总余额表中账户的总余额是实时的,当然,本发明实施例对获取账户的总余额的方式不加以限制。
S206、判断所述账户当前是否存在被冻结的虚拟货币。
由于虚拟货币随着时间的推移存在冻结和解冻的情况,当接收到可用余额查询请求时,可以确定账户是否有被冻结的虚拟货币,可选地,可以通过账户的Uid来匹配该账户是否存在余额数据表,如果存在余额数据表则说明账户存在被冻结的虚拟货币,当然,也可以在冻结虚拟货币时对账户进行标记,以通过标记来确定账户是否存在被冻结的虚拟货币。
如果账户当前存在被冻结的虚拟货币,则执行S207-S208,否则,执行S209。
S207、计算被冻结的虚拟货币的第二余额增量的和值得冻结余额。
如果每个结存周期所增加的虚拟货币被冻结,该结存周期所冻结的额度为第二余额增量的虚拟货币为不可用状态,不计入账户的可用余额中,将所有结存周期被冻结的虚拟货币的第二余额增量累加,可以得到账户被冻结的虚拟货币的冻结余额。
在一个示例中,以账户Uid=12345为示例,虚拟货币的冻结期为3天,其虚拟货币冻结过程如下:
2021-04-20:冻结虚拟货币的数量为50;
2021-04-21:冻结虚拟货币的数量为20;
2021-04-22:冻结虚拟货币的数量为30;
在2021-04-22,账户Uid=12345被冻结的虚拟货币的数量为50+20+30=100;在2021-04-23,2021-04-20冻结的50个虚拟货币被解冻,在2021-04-23,账户Uid=12345被冻结的虚拟货币的数量为20+30=50。
S208、计算所述总余额与所述冻结余额的差值得到所述账户的可用余额。
可用余额为除了冻结余额以外的余额,以账户Uid=12345为示例,虚拟货币的冻结期为3天,其虚拟货币冻结过程如下:
2021-04-20:冻结虚拟货币的数量为50,总余额为200;
2021-04-21:冻结虚拟货币的数量为20,总余额为220;
2021-04-22:冻结虚拟货币的数量为30,总余额为250;
在2021-04-22,账户Uid=12345被冻结的虚拟货币的数量为50+20+30=100,可用余额为250-100=150;在2021-04-23,2021-04-20冻结的50个虚拟货币被解冻,在2021-04-23,账户Uid=12345被冻结的虚拟货币的数量为20+30=50,可用余额为250-50=200。
S209、将所述总余额确定为所述账户的可用余额。
如果账户不存在被冻结的虚拟货币,则直接将账户的总余额确定为可用余额。
S210、将所述可用余额发送到所述业务端。
在确定账户的可用余额后,可以将可用余额发送到业务端,例如可以发送到用户的客户端,以在客户端显示账户的可用余额,或者是将可用余额发送到运维人员所登录的管理平台,在管理平台展示账户的可用余额,当然,也可以将总余额、冻结余额也一同发送到业务端来展示账户的余额明细。
在本发明的另一个可选实施例中,在确定账户的可用余额之后,当接收到业务端的余额扣除请求时,确定余额扣除请求中扣除虚拟货币的扣除额,判断可用余额是否大于扣除额,若是,计算可用余额与扣除额的差值作为账户的可用余额,若否,则生成可用余额不足的提示信息。
以账户Uid=12345为示例,虚拟货币的冻结期为3天,其虚拟货币冻结过程如下:
2021-04-20:冻结虚拟货币的数量为50,总余额为200;
2021-04-21:冻结虚拟货币的数量为20,总余额为220;
2021-04-22:冻结虚拟货币的数量为30,总余额为250;
在2021-04-22,账户Uid=12345被冻结的虚拟货币的数量为50+20+30=100,可用余额为250-100=150,如果接收到余额扣除请求扣除180的虚拟货币,由于可用余额150小于扣除额180,则余额扣除失败,可以生成余额不足提示信息,在2021-04-23,2021-04-20冻结的50个虚拟货币被解冻,在2021-04-23,账户Uid=12345被冻结的虚拟货币的数量为20+30=50,可用余额为250-50=200,如果再次请求扣除180的虚拟货币,由于可用余额200大于扣除额180,可以扣除180的虚拟货币,可用余额为20,总余额为70。
本发明实施例的在余额增加时,确定余额增加时的目标时间所属的结存周期以及确定增加的第一余额增量,将第一余额增量累加到账户在结存周期的第二余额增量中,并在冻结期内冻结额度为第二余额增量的虚拟货币,在接收到业务端的可用余额查询请求时获取账户的总余额,以及计算账户被冻结的虚拟货币的第二余额增量的和值得冻结余额,计算总余额与冻结余额的差值得到账户的可用余额。对于每个账户,可以记录该账户在每个结存周期的冻结余额,在需要查询账户的可用余额时,无需存储和遍历账户的所有历史流水来计算冻结的余额,能够快速通过冻结的余额来计算可用余额,耗时短,可以获得账户的实时可用余额。
进一步地,在扣除余额时,由于记录账户在每个结存周期的冻结余额,无需存储和遍历账户的所有历史流水来计算冻结的余额,能够快速通过每个结存周期的冻结余额来计算可用余额,耗时短,可以获得账户的实时可用余额,从而可以快速判断可用余额与扣除额大小来确定是否可以执行扣除业务,提高了扣除业务的响应速度。
实施例三
图3是本发明实施例三提供的一种账户数据处理装置的结构框图,如图3所示,本发明实施例的账户数据处理装置具体可以包括如下模块:
时间和余额增量获取模块301,用于在账户的虚拟货币的余额增加时,获取所述余额增加时的目标时间和所增加的余额的第一余额增量;
结存周期确定模块302,用于确定所述目标时间所属的结存周期;
余额增量累加模块303,用于将所述第一余额增量累加到所述账户在所述结存周期内的第二余额增量中;
冻结模块304,用于在以所述结存周期的周期开始时间为冻结起始时间的冻结期内,冻结额度为所述第二余额增量的虚拟货币;
业务请求响应模块305,用于当接收到针对所述账户的余额的业务处理请求时,基于所述第二余额增量响应所述业务处理请求。
本发明实施例所提供的账户数据处理装置可执行本发明实施例一或者实施例二所提供的账户数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例四
参照图4,示出了本发明一个示例中的一种电子设备的结构示意图。如图4所示,该电子设备具体可以包括:处理器401、存储装置402、具有触摸功能的显示屏403、输入装置404、输出装置405以及通信装置406。该电子设备中处理器401的数量可以是一个或者多个,图4中以一个处理器401为例。该电子设备的处理器401、存储装置402、显示屏403、输入装置404、输出装置405以及通信装置406可以通过总线或者其他方式连接,图4中以通过总线连接为例。所述电子设备用于执行如本发明任一实施例提供的账户数据处理方法。
本发明实施例还提供一种计算机可读存储介质,所述存储介质中的指令由设备的处理器执行时,使得设备能够执行如上述方法实施例所述的账户数据处理方法。
需要说明的是,对于装置、电子设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变换、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种基于区块链的交易信息安全维护系统