具体实施方式
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书实施例一部分实施例,而不是全部的实施例。基于本说明书实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。
资产拆分,指的是对于一笔涉及到多个受益方的资金交易,当该笔资金交易产生增值收益时,按照交易合同中的收益分配方案将该笔交易所产生的收益进行拆分,将该笔交易所产生的收益按业务要求分配到各个受益方。
在资产拆分的过程中,往往就会涉及到多层拆分的情况下,以借款人利息拆分场景为例,如图1所示,假设借款人到期后支付利息100元。首先,第一层拆分按合约规定的占比,将这100元利息拆分到投资人群体40元、金融平台10元、保险公司50元。对于投资人群体的40元还需要进一步按照投资人份额继续拆分到每个投资人个体,作为各个投资人的投资收益,保险公司的50元也需要按照投资人份额继续拆分,以确定每个投资人的保费。
由图1所示的资产拆分场景可以发现,对于一笔待拆分的资产而言,在不同的业务场景中可能要求拆分的层级深度各不相同,有的只需要一层拆分,有的则可能需要多层拆分,且下层的拆分计算需要依赖上层的拆分结果。例如,在图1中,拆分至金融平台仅需要一层拆分,但是拆分至投资人客体需要两层拆分。在实际的业务场景中,有时还会有更下层的拆分需求,即,可能需要拆分三层、四层,设置更多层。
在本例中,考虑到为了满足上述的资产拆分需求,可以建立一个统一的资产拆分计算模型,通过该拆分计算模型可以支持无上限的拆分计算层数。那么,业务调用方可以根据自身的业务需求输入拆分请求参数,以实现拆分。
在本说明书实施例中提供了一种资产拆分系统,如图2所示,可以包括:业务请求方201和拆分服务器202,其中,业务请求方201可以输入资产拆分请求,在该资产拆分请求中携带有拆分参数,拆分服务器202可以将拆分参数输入至资产拆分模型中,以实现资产拆分。
其中,上述的业务请求方201可以是银行需求平台、企业需求平台等等,可以是以移动终端的方式,也可以是以终端集群或者是独立的计算机集群的方式等呈现,本申请对此不作限定。
上述的拆分服务器202可以是单一的服务器,也可以是服务器集群等等,在实际实现的时候,拆分服务器202可以提供一个输入平台,业务请求方可以通过终端设备登陆该平台,并输入携带有拆分参数的拆分请求,以触发进行拆分。
基于此,在本发明实施例中提供了一种资产对象拆分方法,图3是本说明书实施例所述一种资产对象拆分方法一个实施例的方法流程图。虽然本说明书实施例提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
具体的,如图3所示,本说明书实施例一种实施例提供的资产对象拆分方法可以包括如下步骤:
步骤301:获取资产拆分请求;
其中,该资产拆分请求,可以是用户通过文字输入的,也可以是用户通过列表的方式输入的。例如,可以是提供一个列表,在该列表中记录有所需要的参数,提供该列表之后,系统可以自动识别出列表或者表格里的拆分参数。然而,值得注意的是,上述所列举的资产请求的输入模式仅是一种示例性描述,在实际实现的时候,还可以其它方式。
步骤302:响应于所述资产拆分请求,获取拆分参数;
其中,拆分请求参数可以包括但不限于以下至少之一:待拆分资产对象的资产量、拆分的首层目标对象列表、首层目标对象列表中各对象的分配权重、所述首层目标对象中各对象是否需继续拆分。
举例而言,拆分参数为:待拆分资产为:100元;首层拆分对象列表为:投资人群体,金融平台和保险公司;首层各拆分对象的分配权重为:投资人群体40%、金融平台10%、保险公司50%;投资人群体需要继续拆分、金融平台不需要继续拆分、保险公司也不需要继续拆分。
因为投资人群体需要继续拆分,那么就需要进一步的获取投资人群体对应的拆分操作的拆分参数,可以包括:拆分的二层目标对象列表、二层目标对象列表中各对象的分配权重、所述二层目标对象中各对象是否需继续拆分。如果二层目标对象中存在需要继续拆分的,那么就再继续三层拆分参数的获取。
即,需要进行几层拆分,就获取几层的拆分参数。在获取到各层的拆分参数之后,就可以作为资产拆分请求对应的拆分参数,将这些数据输入到拆分模型中,就可以实现资产拆分。
步骤303:将所述拆分参数输入预设的资产拆分模型中进行资产拆分,其中,所述资产拆分模型支持多层拆分。
其中,该资产拆分模型是支持多层拆分的,层与层之间可以采用递归的方式进行关联推进。具体的,将拆分参数输入预设的资产拆分模型中进行资产拆分,可以包括:
S1:调用所述预设的资产拆分模型,根据首层目标对象列表中各对象的分配权重,将所述待拆分资产对象的资源量拆分至所述首层目标对象列表中各对象;
例如:待拆分资产为:100元;首层拆分对象列表为:投资人群体,金融平台和保险公司;首层各拆分对象的分配权重为:投资人群体40%、金融平台10%、保险公司50%。按照拆分权重:40%、10%和50%可以将100元拆分至投资人群体40元、金融平台10元,保险公司50元。
S2:确定所述首层目标对象列表中各对象是否需要继续拆分;
对于首层目标对象,可以标识哪些是需要继续拆分的(例如,通过1标识投资人群组需要继续拆分)中,标识哪些是不需要继续拆分的(例如:通过0标识金融平台和保险公司不需要继续拆分)。
S3:在确定需要继续拆分的情况下,重复递归调用所述预设的资产拆分模型,进行资产拆分,直至当前层的目标对象都无需被资产拆分。
对于不需要拆分的目标对象,拆分至的结果就是最终的结果,对于需要拆分的目标对象,就重复递归调用所述预设的资产拆分模型,进行资产拆分,直至当前层的目标对象都无需被资产拆分。例如:上述投资人群体40元,需要继续拆分,拆分至的二层目标对象为:投资人个体1、投资人个体2和投资人个体3,其中,投资人个体1比重为20%、投资人个体2比重为50%、投资人个体3比重为30%,通过拆分模型基于该拆分比重,可以将这40元拆分至投资人个体1为8元、投资人个体2为20元、投资人个体3为12元。如果确定投资人个体1、投资人个体2和投资人个体3都不需要继续进行拆分,那么就拆分停止,如果有些需要继续拆分,那么就进行三层、甚至是四层拆分等等。
考虑到在实际的拆分过程中,因为涉及到多层拆分,如果上层的拆分出现了错误,那么会导致后续层的拆分都跟着出错。如果在拆分的过程中,可以及时发现每层拆分结果中的错误,及时进行纠正,那么可以避免大范围出错。为此,可以为每层拆分提供自检功能,即,在将拆分参数输入预设的资产拆分模型中进行资产拆分的过程中,可以对还包括:在每一层拆分完成之后,对该层的拆分结果进行正确性校验。
具体的,在对该层的拆分结果进行正确性校验,可以是获取该层拆分的待拆分资产量,作为目标量;对该层拆分至各目标对象的资产量进行累加计算,得到拆分量;在所述目标量等于所述拆分量的情况下,确定校验通过。
即,例如,上述第一层拆分在拆分完成之后,因为拆分总金额为100元,在首层拆分完成之后,可以确定拆分至投资人群体,金融平台和保险公司的累加和是否为100元,如果发现数值不等于100元,那么可以确定拆分在该层是错误的。例如,投资人群体为45,金融平台10和保险公司50,累加和就是105大于100,可以确定本次拆分结果是错误的。及时进行更改,校正,否则,会导致二层拆分至投资人个体1、投资人个体2、投资人个体3的拆分结果也是错误的。如果在首层拆分结束就发现拆分错误的问题,就可以避免二层拆分结果出错。
在实际实现的过程中,上述的资产拆分请求可以应用于多种场景,例如:银行贷款、理财平台、企业分红或者是产品分销等等。相应的,上述资产拆分请求可以包括但不限于以下至少之一:贷款利息拆分、分销利润拆分、企业员工分红。任何涉及到总资产进行多层拆分的场景,都可以采用本说明书实施例的方式,本说明书实施例对此不作限定。
即,在上例中,在实现的时候,采用递归的方式设置该拆分计算模型,其中,递归是一个过程或函数,是直接或间接调用自身的一种方法。通过递归方式可以将一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,因此,通过该递归策略可以通过很少的程序就可以描述出解题过程所需要的多次重复计算,从而可以节省程序的代码量。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本说明书实施例,并不构成对本说明实施例的不当限定。
如图4所示,一笔待拆分的资产可能根据业务的要求进行多层的拆分,拆分计算的过程中需要逐层进行,下层的拆分依赖上层的拆分计算结果,对于需要继续拆分的节点而言,可以采用递归的方式将该节点作为一个新的待拆分资产进行拆分,即,可以采用与前一层同样的拆分方式拆分。
如图5所示为上例中数据结构的示意图,其中,AssetSplitInfo作为拆分计算请求的根对象,包括:待拆分资产的额度大小以及第一层的拆分目标信息列表;AssetSplitInfoDetail对象作为具体的拆分目标,其中,splitedAmount字段用来保存当前拆分目标计算所得结果,如果当前拆分目标结果需要继续拆分计算,则keepSplit字段为true,splitInfoDetails作为当前拆分节点继续拆分的目标信息列表。
其中,AssetSplitInfo为拆分的根对象,可以携带有:拆分的额度大小、拆分的首层目标对象列表。拆分计算根据当前拆分层次所有目标对象的权重将待拆分额度进行分配。
其中,AssetSplitInfoDetail为拆分的拆分目标,拆分目标作为递归拆分的统一对象,可以携带有:拆分目标对象标识、拆分目标权重、每次拆分完成后会记录拆分到这个对象的额度大小以及是否继续拆分标识和继续拆分目标对象列表。
在实现的时候,上述的资产拆分计算模型可以采用如下的代码实现:
public void process(AssetSplitInfo assetSplitInfo){
//1.校验该层请求对象
doCheck(assetSplitInfo);
//2.拆分计算处理
doSplit(assetSplitInfo);
//3.处理完自检,本层拆分完成的每个业务方所得金额汇总应该等于待拆分金额
splitResultCheck(assetSplitInfo);
//4.遍历本层拆分目标
for(AssetSplitInfoDetail assetSplitInfoDetail:assetSplitInfo.getAssetSplitDetails()){
//5.判断拆分目标是否需要继续拆分
if(assetSplitInfoDetail.isKeepSplit()){
//6.组装新的拆分计算模型
AssetSplitInfo continueAssetSplitInfo=buildNextAssetSplitInfo(assetSplitInfoDetail);
//7.继续递归处理
process(continueAssetSplitInfo);
}
}
}
举例而言,拆分参数为:待拆分资产为:100元;首层拆分对象列表为:投资人群体,金融平台和保险公司;首层各拆分对象的分配权重为:投资人群体40%、金融平台10%、保险公司50%;投资人群体需要继续拆分、金融平台不需要继续拆分、保险公司也不需要继续拆分。
因为投资人群体需要继续拆分(即,KeepSplit对应的字段表征需要拆分),那么就需要进一步的获取投资人群体对应的拆分操作的拆分参数,可以包括:拆分的二层目标对象列表、二层目标对象列表中各对象的分配权重、所述二层目标对象中各对象是否需继续拆分。如果二层目标对象中存在需要继续拆分的,那么就再继续三层拆分参数的获取。
假设上述投资人群体40元,需要继续拆分,拆分至的二层目标对象为:投资人个体1、投资人个体2和投资人个体3,其中,投资人个体1比重为20%、投资人个体2比重为50%、投资人个体3比重为30%,通过拆分模型基于该拆分比重,可以将这40元拆分至投资人个体1为8元、投资人个体2为20元、投资人个体3为12元。如果确定投资人个体1、投资人个体2和投资人个体3都不需要继续进行拆分,那么就拆分停止,如果有些需要继续拆分,那么就进行三层、甚至是四层拆分等等。
在上例中,是以利息分配为例进行的说明,在实际实现的时候,还可以有其它的分配需求,可以根据实际的业务场景需求进行扩展,例如,在总公司进行分销的利润分配的时候,可以按照总公司-一级分销商-二级分销商-三级分销商的层级进行多层的拆分。在这种拆分场景中,就可以采用上述的资产拆分方法。
为了保证每层拆分过程中,拆分结果的准确性,可以每层对自己的拆分结果进行自检,以保证每层资产拆分结果的正确性,从而保证全局的拆分计算结果正确性。具体的,在进行自检的时候,可以是采用确定拆分完成的每个业务方所得金额汇总应该等于待拆分金额,就自身所拆至的目标对象的拆分金额的累加和是否等于自身需要拆分出去的金额数。
具体的,在上例中,针对资产拆分提出了一种拆分计算模型,通过该拆分计算模型可以支持对一笔资产的无限拆分,同时考虑到在多层拆分的过程中,下层的拆分计算需要依赖与上层的拆分结果,为了保证全局拆分结果的正确性,对于每层而言,在拆分的时候,都对拆分结果进行一个自检,以确定当前层拆分结果的准确性,从而保证传入至下层的数据是正确的。在使用该拆分模型的过程中,不同的业务产品方可以根据自身的业务需求灵活填充拆分计算模型的请求参数,然后,执行计算,以得到业务需要的拆分结果。因为在计算逻辑上不需要进行改动,因此具备很好的复用性。
本说明书上述实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图6是本发明实施例的一种资产对象拆分方法的计算机终端的硬件结构框图。如图6所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图6中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的资产对象拆分方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的资产对象拆分方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在软件层面,上述资产对象拆分装置,如图7所示,可以包括:第一获取模块701,用于获取资产拆分请求;第二获取模块702,用于响应于所述资产拆分请求,获取拆分参数;拆分模块703,用于将所述拆分参数输入预设的资产拆分模型中进行资产拆分,其中,所述资产拆分模型支持多层拆分。
在一个实施方式中,上述拆分请求参数可以包括但不限于以下至少之一:待拆分资产对象的资产量、拆分的首层目标对象列表、首层目标对象列表中各对象的分配权重、所述首层目标对象中各对象是否需继续拆分。
在一个实施方式中,上述拆分模块703可以包括:调用单元,用于调用所述预设的资产拆分模型,根据首层目标对象列表中各对象的分配权重,将所述待拆分资产对象的资源量拆分至所述首层目标对象列表中各对象;确定单元,用于确定所述首层目标对象列表中各对象是否需要继续拆分;递归单元,用于在确定需要继续拆分的情况下,重复递归调用所述预设的资产拆分模型,进行资产拆分,直至当前层的目标对象都无需被资产拆分。
在一个实施方式中,上述资产对象拆分装置还可以包括:校验模块,用于在将所述拆分参数输入预设的资产拆分模型中进行资产拆分的过程中,在每一层拆分完成之后,对该层的拆分结果进行正确性校验。
在一个实施方式中,上述校验模块可以包括:获取单元,用于获取该层拆分的待拆分资产量,作为目标量;计算单元,用于对该层拆分至各目标对象的资产量进行累加计算,得到拆分量;校验单元,用于在所述目标量等于所述拆分量的情况下,确定校验通过。
在一个实施方式中,上述资产拆分请求可以包括但不限于以下至少之一:贷款利息拆分、分销利润拆分、企业员工分红。
在上例中,通过预先建立的资产拆分模型,该资产拆分模型可以支持多层拆分,获取资产拆分请求中的拆分参数输入进该资产拆分模型即可实现对资产的多层拆分,通过上述方式解决了现有的多层拆分仅能进行复杂的编码所导致的多层拆分复杂度比较高,通用性比较低的问题,达到了简单高效实现多层拆分的技术效果。
虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本说明书实施例中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书实施例所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的硬件的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书实施例的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书实施例,本领域普通技术人员知道,本说明书实施例有许多变形和变化而不脱离本说明书实施例的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书实施例的精神。