权益兑换方法和装置
技术领域
本公开涉及互联网领域,尤其涉及一种权益兑换方法和装置。
背景技术
互联网医院权益业务中存在多种权益场景,如家庭医生问诊权益包、马自达问诊权益包以及其他问诊权益包等。各种权益包下封装的权益多种多样,例如,互联网医院问诊权益、医院绿色通道权益、量表权益、体检权益等多种权益。用户使用互联网医院及其合作渠道分发的权益码兑换各类权益包。各种权益包根据其包装的权益不同,在兑换过程中存在各种差异。相关兑换流程中,每种兑换流程都是一套完整的流程,每套流程都有一套完整的代码支撑。
发明内容
本公开要解决的一个技术问题是,提供一种权益兑换方法和装置,能够提高代码复用率,进而降低开发工作量。
根据本公开一方面,提出一种权益兑换方法,包括:接收用户输入的与业务权益相关的兑换数据;利用多个兑换业务共享的公共校验逻辑,对兑换数据进行校验处理;调用与业务权益相应的个性化兑换逻辑;利用个性化兑换逻辑,对兑换数据进行兑换处理,以及输出与用户输入的与业务权益相关的兑换结果。
在一些实施例中,公共校验逻辑通过类实现,其中,类包括兑换结果构造接口,以及标准兑换数据结构转换接口、数据库查询兑换结果接口、自定义校验接口和兑换结果校验接口中的至少一项。
在一些实施例中,对兑换数据进行校验处理包括:利用多个兑换业务共享的兑换数据空校验逻辑,判断兑换数据是否为空;其中,在兑换数据不为空的情况下,调用个性化兑换逻辑。
在一些实施例中,对兑换数据进行校验处理还包括:利用多个兑换业务共享的兑换数据加锁逻辑,对兑换数据进行加锁。
在一些实施例中,对兑换数据进行校验处理还包括以下步骤中的一项或多项:利用多个兑换业务共享的兑换数据已兑换校验逻辑,判断兑换数据是否已兑换;利用多个兑换业务共享的兑换数据已失效校验逻辑,判断兑换数据是否已失效;利用多个兑换业务共享的兑换数据已过期校验逻辑,判断兑换数据是否已过期。
在一些实施例中,对兑换数据进行兑换处理包括:利用业务权益相应的构造兑换结果逻辑,构造用户的业务权益对应的兑换结果。
在一些实施例中,对兑换数据进行兑换处理还包括:利用业务权益相应的构造结果校验逻辑,对用户的兑换结果进行校验。
在一些实施例中,对兑换数据进行兑换处理还包括:若兑换数据加锁成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,若已兑换,则向用户反馈兑换结果,否则,将查询结果反馈至公共校验逻辑;若兑换数据加锁不成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,并向将查询结果反馈给用户。
在一些实施例中,对兑换数据进行兑换处理还包括:利用业务权益相应的自定义校验逻辑,对兑换数据进行自定义校验。
在一些实施例中,基于对兑换数据进行兑换处理还包括:在兑换数据不为空的情况下,利用标准兑换数据结构转换逻辑,将兑换数据转换为标准兑换数据。
根据本公开的另一方面,还提出一种权益兑换装置,包括:数据接收模块,被配置为接收用户输入的与业务权益相关的兑换数据;公共校验处理模块,被配置为利用多个兑换业务共享的公共校验逻辑,对兑换数据进行校验处理,以及调用与业务权益相应的个性化兑换处理模块;个性化兑换处理模块,被配置为利用个性化兑换逻辑,对兑换数据进行兑换处理;以及结果输出单元,被配置为输出与用户输入的与业务权益相关的兑换结果。
在一些实施例中,公共校验逻辑通过类实现,其中,类包括兑换结果构造接口,以及标准兑换数据结构转换接口、数据库查询兑换结果接口、自定义校验接口和兑换结果校验接口中的至少一项。
根据本公开的另一方面,还提出一种权益兑换装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行如上述的权益兑换方法。
根据本公开的另一方面,还提出一种非瞬时性计算机可读存储介质,其上存储有计算机逻辑指令,该指令被处理器执行时实现上述的权益兑换方法。
本公开实施例中,将各类兑换业务相同的处理过程进行抽取重构,并统一实现,而对于兑换业务中的差异,由开发者进行实现,开发者只需关于个性化兑换逻辑,不再需要关注复杂的整个兑换流程,从而能够提高代码复用率,减少了开发工作量。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,
其中:
图1为本公开的权益兑换方法的一些实施例的流程示意图。
图2为本公开的权益兑换框架的一些实施例的示意图。
图3为本公开的权益兑换方法的另一些实施例的流程示意图。
图4为本公开的权益兑换装置的一些实施例的结构示意图。
图5为本公开的权益兑换装置的另一些实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
相关技术中,在多套流程间有些处理过程是相同的,这就导致了支撑流程的代码存在重复情况,也就是重复开发导致的代码复用率低,而新增加一种流程时依然要重复开发这些相同的处理过程,也就增加了研发成本。
图1为本公开的权益兑换方法的一些实施例的流程示意图。
在步骤110,接收用户输入的与业务权益相关的兑换数据。
在一些实施例中,兑换数据例如为兑换码。
在步骤120,利用多个兑换业务共享的公共校验逻辑,对兑换数据进行校验处理。
在一些实施例中,公共校验逻辑包括兑换数据空校验逻辑、兑换数据加锁逻辑、兑换数据已兑换校验逻辑、兑换数据已失效校验逻辑以及兑换数据已过期校验逻辑等。
在一些实施例中,利用多个兑换业务共享的兑换数据空校验逻辑,判断兑换数据是否为空,在兑换数据不为空的情况下,调用个性化兑换逻辑。若兑换数据为空,则进行异常处理。
在一些实施例中,利用多个兑换业务共享的兑换数据加锁逻辑,对兑换数据进行加锁,从而保证兑换流程不会产生并发。
在一些实施例中,利用多个兑换业务共享的兑换数据已兑换校验逻辑,判断兑换数据是否已兑换,避免用户多次兑换。
在一些实施例中,利用多个兑换业务共享的兑换数据已失效校验逻辑,判断兑换数据是否已失效,避免用户使用已失效的兑换码兑换权益。
在一些实施例中,利用多个兑换业务共享的兑换数据已过期校验逻辑,判断兑换数据是否已过期,避免用户使用已过期的兑换码兑换权益。
在步骤130,调用与该业务权益相应的个性化兑换逻辑。
在一些实施例中,个性化兑换逻辑包括标准兑换数据结构转换逻辑、数据库查询兑换结果逻辑、自定义校验逻辑、兑换结果构造逻辑、和兑换结果检查逻辑等。
在步骤140,利用个性化兑换逻辑,对兑换数据进行兑换处理。
在一些实施例中,利用该业务权益相应的构造兑换结果逻辑,构造用户的业务权益对应的兑换结果。兑换结果例如包括兑换码码串、兑换人、兑换成功状态或失败状态、兑换时间、兑换的权益业务唯一编码、兑换权益的生效和实效时间、兑换权益的可使用次数等。
在一些实施例中,利用该业务权益相应的构造结果校验逻辑,对用户的兑换结果进行校验。例如,检查兑换结果中的生效和实效时间、次数,有些权益只有生效和失效时间,有些权益只有次数。对构造结果进行校验,就是检查兑换的结果数是否正确,如必须有生效和失效时间的,缺失了时间,但有次数等。
在一些实施例中,若兑换数据加锁成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,若已兑换,则向用户反馈兑换结果,否则,将查询结果反馈至公共校验逻辑,若兑换数据加锁不成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,并向将查询结果反馈给用户。例如,用户的兑换码为a1b2c3,用户同时通过APP和PC两个途径做兑换码兑换动作,假设APP兑换途径先拿到了锁,此时PC途径的兑换拿不到锁并等待。APP兑换途径拿到锁以后,继续进行兑换处理,直到兑换成功返回兑换结果;PC途径的兑换不再进行兑换过程,而是直接拿取已经兑换的结果返回到页面。
在一些实施例中,利用业务权益相应的自定义校验逻辑,对兑换数据进行自定义校验。自定义校验是与业务相关的,由具体业务决定是否进行自定义校验,本公开的框架提供了这种可自定义的能力。如用户进行兑换是从一个第三方的专用渠道进来的,此时用户使用的兑换码是互联网医院发放的,但互联网医院并未与该专用渠道合作的,则不能从该专用渠道进行兑换。
在步骤150,输出与用户输入的与业务权益相关的兑换结果。兑换结果为兑换失败的结果或兑换成功的结果。
在上述实施例中,对兑换流程进行抽象处理,将各类兑换业务相同的处理过程进行抽取重构,并统一实现,而对于兑换业务中的差异,由开发者进行实现,开发者只需关于个性化兑换逻辑,不再需要关注复杂的整个兑换流程,从而能够提高代码复用率,减少了开发工作量。
在本公开的一些实施例中,公共校验逻辑通过类实现,其中,类包括兑换结果构造接口,以及标准兑换数据结构转换接口、数据库查询兑换结果接口、自定义校验接口和兑换结果校验接口等。
根据公共校验逻辑中每个校验逻辑的校验结果,确定调用哪个接口。例如,在执行完兑换数据空校验逻辑后,调用标准兑换数据结构转换接口,在执行完兑换数据加锁逻辑后,调用数据库查询兑换结果接口,在执行完兑换数据已兑换校验逻辑、兑换数据已失效校验逻辑以及兑换数据已过期校验逻辑后,调用自定义校验接口或兑换结果构造接口等。
在该实施例中,定义并组织标准的兑换流程,并提供了差异化的接口给各类兑换业务实现自定义的逻辑,简化了兑换业务流程,使得开发者仅需要关注自己的兑换业务关键点,而不需要花费精力研发整套兑换业务。
图2为本公开的权益兑换框架的一些实施例的示意图。其中,框架核心是一个标准兑换类,这个类是一个抽象类,框架能力定义多个兑换业务共享的公共校验逻辑,包括兑换码空校验、兑换码加锁、兑换码已兑换校验、兑换码已失效校验、兑换码已过期校验。
框架使用者需要实现的能力包括兑换码转换为框架标准数据、查询数据库检查兑换结果、自定义校验、构造兑换结果、构造结果校验等。兑换码转换为框架标准数据的目标,是将业务上自定义的兑换码数据结构转换成兑换框架定义的标准兑换码数据结构。查询数据库检查兑换结果,需要由使用框架的业务进行学习,目标是在加锁成功或失败以后,查询兑换码的兑换结果。自定义校验接口,需要由使用框架的业务进行实现,目标是满足业务上一些自定义的校验需求,如果无此需求,可以空实现。兑换结果校验接口,需要由使用框架的业务进行实现,目标是对自定义的兑换结果进行自定义的检查。
在上述实施例中,分析各类兑换业务的特点,对兑换流程做抽象处理,发掘各类兑换业务中的通用点,并梳理兑换业务中的差异情景,其中,兑换框架抽象了整个兑换流程,将多套兑换流程间相同的处理过程进行抽取重构并统一实现,再定义出多套流程间不同的处理过程交由实际兑换业务开发者进行实现,从而使实际兑换业务开发者只需要关心多套兑换流程间不同的处理过程即可,从而达到提高代码复用率和提效的目的。
图3为本公开的权益兑换方法的另一些实施例的流程示意图。业务逻辑将兑换码数据、是否开启默认校验标志、是否开启自定义校验标志传输给兑换框架。
在步骤300,接收用户输入的兑换码。
在步骤310,判断兑换码是否为空,若为空,则只需步骤311,否则,执行步骤320。
在步骤311,抛出参数错误异常。若兑换码为空,则不再执行后续步骤。
在步骤320,将兑换码转换为兑换框架标准的兑换码数据对象。
在一些实施例中,不同的兑换业务,标准数据格式可以不同。
在步骤330,对该兑换码加锁。
通过对兑换码加锁,使得同一个兑换码的并发兑换请求被串行化执行,首先拿到锁的请求先执行兑换流程。
在步骤340,判断兑换码是否加锁成功,若成功,则执行步骤341,否则,执行步骤342。
在步骤341,查询数据库中的兑换结果,并判断兑换码是否已兑换成功,若兑换未成功,则执行步骤350,否则,向用户反馈结果。
在对兑换加锁成功后,会查询下数据库中持久化的兑换结果,兑换结果包括已兑换或者未兑换。如果为已兑换,则直接返回查询到的兑换结果数据,如果为未兑换,则继续向下处理,保证已经兑换的兑换码不会再次被兑换。
在步骤342,查询数据库中的兑换结果,并向用户返回兑换结果。
在一些实施例中,若兑换码加锁不成功,则每隔一段时间进行重试,再次尝试对兑换码加锁,如果能加锁成功,则继续执行步骤341,如果直至超时也未能成功,则查询数据库中的兑换结果,并返回兑换结果。
在步骤350,判断是否开启默认校验标志,若是,则执行步骤360,否则,执行步骤370。
在步骤360,判断兑换码是否已兑换,若是,则执行步骤363,否则,执行步骤361。
在步骤361,判断兑换码是否已失效,若是,则执行步骤363,否则,执行步骤362。
在步骤362,判断兑换码是否已过期,若是,则执行步骤363,否则,执行步骤370。
在一些实施例中,步骤360、步骤361和步骤362可以同时执行,也可以不分先后执行。
在步骤363,抛出相应异常提示。
在步骤370,判断是否已开启默认自定义校验标志,若是,则执行步骤371,否则,执行步骤380。
在步骤371,执行自定义校验逻辑。
针对不同权益包,自定义校验过程可以不同。在自定义校验中,可以用户非标准数据,即用户直接输入的兑换码。
在步骤380,构造兑换结果数据。
针对不同权益包,构造兑换结果的过程可以不同。
在步骤390,对构造结果数据进行校验。
在步骤3100,输出兑换结果。
在上述实施例中,复用了兑换流程,兑换业务只需要关注并实现兑换业务中在不同业务线上的差异点,简化了开发过程。若开发者需要增加新的兑换业务,只需重新实现自定义校验和构造兑换结果逻辑即能支持新权益包的兑换。
图4为本公开的权益兑换装置的一些实施例的结构示意图。该权益兑换装置包括数据接收模块410、公共校验处理模块420、个性化兑换处理模块430和结果输出单元440。
数据接收模块410被配置为接收用户输入的与业务权益相关的兑换数据;公共校验处理模块420被配置为利用多个兑换业务共享的公共校验逻辑,对兑换数据进行校验处理,以及调用与业务权益相应的个性化兑换处理模块430;个性化兑换处理模块430被配置为利用个性化兑换逻辑,对兑换数据进行兑换处理;结果输出单元440被配置为输出与用户输入的与业务权益相关的兑换结果。
在一些实施例中,公共校验逻辑通过类实现,其中,类包括兑换结果构造接口,以及标准兑换数据结构转换接口、数据库查询兑换结果接口、自定义校验接口和兑换结果校验接口中的至少一项。
在一些实施例中,兑换数据例如为兑换码。
在一些实施例中,公共校验逻辑包括兑换数据空校验逻辑、兑换数据加锁逻辑、兑换数据已兑换校验逻辑、兑换数据已失效校验逻辑以及兑换数据已过期校验逻辑等。
在一些实施例中,公共校验处理模块420被配置为利用多个兑换业务共享的兑换数据空校验逻辑,判断兑换数据是否为空,在兑换数据不为空的情况下,调用个性化兑换逻辑。若兑换数据为空,则进行异常处理。
在一些实施例中,公共校验处理模块420被配置为利用多个兑换业务共享的兑换数据加锁逻辑,对兑换数据进行加锁,从而保证兑换流程不会产生并发。
在一些实施例中,公共校验处理模块420被配置为利用多个兑换业务共享的兑换数据已兑换校验逻辑,判断兑换数据是否已兑换,避免用户多次兑换。
在一些实施例中,公共校验处理模块420被配置为利用多个兑换业务共享的兑换数据已失效校验逻辑,判断兑换数据是否已失效,避免用户使用已失效的兑换码兑换权益。
在一些实施例中,公共校验处理模块420被配置为利用多个兑换业务共享的兑换数据已过期校验逻辑,判断兑换数据是否已过期,避免用户使用已过期的兑换码兑换权益。
在一些实施例中,个性化兑换处理模块430被配置为利用该业务权益相应的构造兑换结果逻辑,构造用户的业务权益对应的兑换结果。兑换结果例如包括兑换码码串、兑换人、兑换成功状态或失败状态、兑换时间、兑换的权益业务唯一编码、兑换权益的生效和实效时间、兑换权益的可使用次数等。
在一些实施例中,个性化兑换处理模块430被配置为利用该业务权益相应的构造结果校验逻辑,对用户的兑换结果进行校验。
在一些实施例中,个性化兑换处理模块430被配置为若兑换数据加锁成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,若已兑换,则向用户反馈兑换结果,否则,将查询结果反馈至公共校验逻辑;若兑换数据加锁不成功,则利用数据库查询兑换结果逻辑,查询用户是否已兑换过兑换数据,并向将查询结果反馈给用户。
在一些实施例中,个性化兑换处理模块430被配置为利用业务权益相应的自定义校验逻辑,对兑换数据进行自定义校验。自定义校验是与业务相关的,由具体业务决定是否进行自定义校验,本公开的框架提供了这种可自定义的能力。如用户进行兑换是从一个第三方的专用渠道进来的,此时用户使用的兑换码是互联网医院发放的,但互联网医院并未与该专用渠道合作的,则不能从该专用渠道进行兑换。
在上述实施例中,对兑换流程进行抽象处理,将各类兑换业务相同的处理过程进行抽取重构,并统一实现,而对于兑换业务中的差异,由开发者进行实现,开发者只需关于个性化兑换逻辑,不再需要关注复杂的整个兑换流程,从而能够提高代码复用率,减少了开发工作量。
图5为本公开的权益兑换装置的另一些实施例的结构示意图。该权益兑换装置500包括存储器510和处理器520。其中:存储器510可以是磁盘、闪存或其它任何非易失性存储介质。存储器用于存储图1-3所对应实施例中的指令。处理器520耦接至存储器510,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器520用于执行存储器中存储的指令。
在一些实施例中,处理器520通过BUS总线530耦合至存储器510。该权益兑换装置500还可以通过存储接口540连接至外部存储系统550以便调用外部数据,还可以通过网络接口560连接至网络或者另外一台计算机系统(未标出)。此处不再进行详细介绍。
在该实施例中,通过存储器存储数据指令,再通过处理器处理上述指令,能够提高代码复用率,减少了开发工作量。
在另一些实施例中,一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现图1-3所对应实施例中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。