产品价格计算方法及装置与流程

文档序号:17117569发布日期:2019-03-15 23:28阅读:947来源:国知局
产品价格计算方法及装置与流程

本发明涉及互联网技术领域,具体而言,涉及一种产品价格计算方法及装置。



背景技术:

目前的物流系统的产品价格体系主要由三部分组成:基础体系(公布价等)、折扣体系(合同折扣、活动折扣等)、营销体系(会员体系、积分体系、优惠券体系)。

但是随着业务复杂度以及业务量快速增长,客户对于产品价格个性化需求不断增加,导致原有foss计价系统业务系统逻辑嵌套,内部杂乱,模型概念缺失,逻辑串行,耗时长,响应慢,计价性能低下(零担均值3.5s,快递均值1.5s),需求强绑定,且系统是传统单体应用,紧耦合,同时价格模型扩展性、灵活性差,不能支持业务高速发展。

也就是说,目前的物流系统的计价系统和其他系统耦合在一起,共用一个数据库,业务板块相互嵌套,且查询快递基本信息基本是通过串行的方式进行,其操作步骤增多,响应速度慢,性能低下。



技术实现要素:

本发明的目的在于提供一种产品价格计算方法,以提高响应速度,提高系统性能。

本发明的另一目的在于提供一种产品价格计算装置,以提高响应速度,提高系统性能。为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种产品价格计算方法,所述方法包括:获取运单上的各个字段信息;采用多线程根据所述各个字段信息并行查询基本信息;从所述基本信息中提取出主要信息;依据所述主要信息选取对应的计价模型;根据所述计价模型为对应的运单上的产品计算价格。

第二方面,本发明实施例还提供了一种产品价格计算装置,所述装置包括:获取模块,用于获取运单上的各个字段信息;查询模块,用于采用多线程根据所述各个字段信息并行查询基本信息;提取模块,用于从所述基本信息中提取出主要信息;选取模块,用于依据所述主要信息选取对应的计价模型;计算模块,用于根据所述计价模型为对应的运单上的产品计算价格。

本发明实施例提供的一种产品价格计算方法及装置,该方法包括获取运单上的各个字段信息,采用多线程根据各个字段信息并行查询基本信息,进而从所述基本信息中提取出主要信息,并依据主要信息选取对应的计价模型,最后根据确定的计价模型为对应的运单上的产品计算价格。由此可见,本发明首先根据运单上记载的信息查询整个物流过程中需要的基本信息,进而从基本信息中提取主要信息确定该类别下适用的计价模型,从而根据该计价模型计算对应产品的价格,提高了响应速度以及系统性能。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的一种产品价格计算方法的流程示意图。

图2示出了本发明实施例提供的一种产品价格计算装置的功能模块示意图。

图示:100-产品价格计算装置;110-获取模块;120-查询模块;130-存储模块;140-搜索模块;150-提取模块;160-选取模块;170-封装模块;180-计算模块;190-记录模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本发明实施例提供的一种产品价格计算方法应用于产品价格系统,经改进后的产品价格系统包括多个功能模块,如快递产品计价服务、零担计价服务、辅助计费服务、价格主数据服务、价格查询服务以及定时任务服务等,每个功能模块只做单一的事情,各个模块之间相互隔离,一个功能模块的功能发生变更不会影响到其他功能模块,因此,按需扩容更加方便,大大降低了硬件成本,提供了服务的可用率和稳定性,不同功能模块之间也可以通过接口调用实现相互访问。

其中,该快递产品计价服务模块主要实现用于对快递产品计算总运费,该快递产品主要为小件货物;该零担计价服务模块主要用于实现对零担产品计算总运费,该零担产品主要为大件货物;该辅助计费服务模块主要用于为用户提供查询服务,主要查询每个区域的快递价格;该价格主数据服务主要用于对快递价格和产品进行更新;该价格查询服务模块主要用于提供公布价查询服务,该定时任务服务模块主要用于显示不同地方的快递价格。容易理解的,该产品系统还包括多个其他功能模块,各个功能模块独立实现各自的功能流程,并通过接口调用实现数据共享以形成完整的产品系统。

请参照图1,是本发明实施例提供的一种产品价格计算方法的流程示意图,该方法包括:

步骤s110,获取运单上的各个字段信息。

具体为,系统可通过扫描的方式获取运单上的各个字段信息,或者工作人员也可将运单上的各个字段信息人为录入系统中。该各个字段信息包括但不限于,产品名称、出发部门、到达部门、客户编码、快递时间等。

步骤s120,采用多线程根据所述各个字段信息并行查询基本信息。

具体为,在每一次计价中需要查询大量信息,如出发部门信息、到达部门信息、出发价格区域、到达价格区域、客户合同信息、折扣信息、产品编码信息、计价条目信息等,如果按照顺序依次采用查询语句对每条信息进行逐条查询,则会耗费大量时间,导致性能低下。进而采用多线程根据各个字段信息并行查询所有需要的基本信息,将在一定程度上提高系统性能,提高查询效率。

步骤s130,将查询得到的基本信息分别存储于分布式缓存中,以便于下次查询所述基本信息时可从所述分布式缓存中直接获取。

即由于每次计价都要查询大量数据,如价格区域数据、部门信息数据、产品编码信息、计价条目数据、数据字典信息、客户合同数据、各种折扣数据,如果每次对相同数据的计价计算都从数据库读取数据,将会导致数据库压力过大,计价响应性能低下。即是说,在物流过程中,可能需要多次读取这些基本信息,或用于计算,或用于查询,为了避免每次都从数据库中读取大量信息,导致数据库性能低下,故在第一次从数据库中查询得到基本信息后,就将基本信息分别存储于分布式缓存中,以便于下次查询基本信息时,可直接从分布式缓存中获取,提高了数据获取的响应速度。

具体为,第一次查询从数据库查询基本信息后,查询出来的数据放到codis(一种分布式缓存)中,为防止codis中数据与数据库数据不一致的问题,将codis中的过期时间设置为24小时过期。需要说明的是,该分布式缓存可将基本信息根据哈希算法存储于不同节点,以使得获取数据时可快速响应用户的请求,同时降低了数据存储的压力。

步骤s140,搜索与所述基本信息关联的关联信息,采用多线程并行查找出所述关联信息。

具体为,该关联信息为与基本信息存在联系的信息,例如,如果运单上记载的货物是接货,系统将会去查询是否有接货价格,如有接货价格获取对应的接货价格,如果没有接货价格就获取非接货价格,亦即是说,接货价格和非接货价格只会显示其中一个信息。在本方案中,查询数据的sql语句将去掉是否接货这一选择条件,而将接货价和非接货价都查询出来,相比正常的逻辑来说不会影响sql性能,但是减少与数据交互次数,减少i/o操作,减少网络传输,同时为用户提供更多选择。

步骤s150,从所述基本信息中提取出主要信息。

该基本信息包括出发部门信息、到达部门信息、出发价格区域、到达价格区域、客户合同信息、折扣信息、产品编码信息、计价条目信息等,进而根据实际需要从该基本信息中提取出主要信息,如该主要信息可以包括出发部门信息、到达部门信息、产品编码信息、到达价格区域等。

步骤s160,依据所述主要信息选取对应的计价模型。

随着业务发展,不同产品的公布价运费有需要包含送货费,有需要包含接货费,有需要包含电商入仓费,有需要包含市场活动,有需要包含客户单独报价,有需要包含送货上楼费,有需要一口价,有需要根据重量体积分段计费,故将不同类价格抽象成模型,给用户按需灵活配置,在计算价格时根据所配置的主要信息进行统一规则计算,避免杂而乱的计价规则。

换句话说,系统内根据不同的运单类型确定了不同的计价模型,如该运单上为需要包含送货费,则将选择已经含有送货费的计价模型,进而不会对该送货费进行重复计算。通过为不同的运单确定不同的计价模型,使得费用计算更加清楚,不至于杂乱无章。

步骤s170,对所述各个字段信息中的费用信息进行封装得到封装结果,根据所述封装结果统一查找每种费用信息的折扣规则反馈至所述计价模型。

即是说,每次计价都涉及到根据运单中包含的字段信息进行多种费用的计算,如每次计价中的各种费用包括有运费、保费、接货费、送货费、代收货款、签收回单、其他费用等,都要通过接口调用规则引擎中是否有线路折扣和渠道折扣,该规则引擎中定义了每种费用的折扣方式。由此可见,若对每种费用的计算都通过接口调用,则计算多种费用需要重复调用多次接口来获取对应费用的折扣规则,增大了网络传输时间。进而,本方案中,将所有费用信息封装成一个json语句,进而根据该json语句一次调用规则引擎,统一查找每种费用的折扣规则反馈至对应的计价模型中,以减少网络传输时间,提高系统性能。

步骤s180,根据所述计价模型为对应的运单上的产品计算价格。

即是说,根据计算规则和折扣信息对运单上的产品自动计算出运输价格。

步骤s190,使用单独的数据库记录操作日志,并按类别对所述日志进行分类存储。

具体为,使用aop拦截日志,日志单独使用mysql数据库存储,与主库oracle分开,互不影响,中间件使用ddb。且根据某一字段分类别存储到不同mysql节点中,提高日志入库性能。每次运算的日志放到线程池进行异步处理,由于日志和主流数据分别存储于不同数据库,故存储日志的数据库的不稳定性不影响正常业务的进行。

由此可见,本方案提供的一种产品价格计算方法,其应用的系统分为多个业务模块,根据业务进行模块梳理、拆分,提高了代码可读性、开发效率,降低了开发难度,保障了公司收益,且可快速根据日志库中的日志排查问题,也可按需在不影响其他功能模块的情况下进行扩展。此外,本方案提供的计价模型为多种,如一口价、多种折扣取优、空运分段计价、快递按件计、按专业市场、按渠道、客户单独报价等多种计价模型优化以及扩展,提升了系统自身与业务高速发展的契合度。使用该计价模型对物流产品进行计价,其计价性能有了很大的提升,如零担计价响应时间从3.5s提升至65ms性能提升54倍,快递计价响应时间从1.5s提升至53ms性能提升28倍,极大地提高了系统性能。

请参照图2,是本发明实施例提供的一种产品价格计算装置100的功能模块示意图,该装置包括获取模块110、查询模块120、存储模块130、搜索模块140、提取模块150、选取模块160、封装模块170、计算模块180以及记录模块190。

获取模块110,用于获取运单上的各个字段信息。

在本发明实施例中,步骤s110可以由获取模块110执行。

查询模块120,用于采用多线程根据所述各个字段信息并行查询基本信息。

在本发明实施例中,步骤s120可以由查询模块120执行。

存储模块130,用于将查询得到的基本信息分别存储于分布式缓存中,以便于下次查询所述基本信息时可从所述分布式缓存中直接获取。

在本发明实施例中,步骤s130可以由存储模块130执行。

搜索模块140,用于搜索与所述基本信息关联的关联信息,采用多线程并行查找出所述关联信息供用户查看。

在本发明实施例中,步骤s140可以由搜索模块140执行。

提取模块150,用于从所述基本信息中提取出主要信息。

在本发明实施例中,步骤s150可以由提取模块150执行。

选取模块160,用于依据所述主要信息选取对应的计价模型。

在本发明实施例中,步骤s160可以由选取模块160执行。

封装模块170,用于对所述各个字段信息中的费用信息进行封装得到封装结果,根据所述封装结果统一查找每种费用信息的折扣规则反馈至所述计价模型。

在本发明实施例中,步骤s170可以由封装模块170执行。

计算模块180,用于根据所述计价模型为对应的运单上的产品计算价格。

在本发明实施例中,步骤s180可以由计算模块180执行。

记录模块190,用于使用单独的数据库记录操作日志,并按类别对所述日志进行分类存储。

在本发明实施例中,步骤s190可以由记录模块190执行。

由于在产品价格计算方法部分已经详细描述,在此不再赘述。

综上所述,本发明实施例提供的一种产品价格计算方法及装置,该方法包括获取运单上的各个字段信息,采用多线程根据各个字段信息并行查询基本信息,进而从所述基本信息中提取出主要信息,并依据主要信息选取对应的计价模型,最后根据确定的计价模型为对应的运单上的产品计算价格。由此可见,本发明首先根据运单上记载的信息查询整个物流过程中需要的基本信息,进而从基本信息中提取主要信息确定该类别下适用的计价模型,从而根据该计价模型计算对应产品的价格,提高了响应速度以及系统性能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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