
本发明涉及通信技术领域,更具体地,涉及一种订单派送方法及系统。
背景技术:
针对房产经纪人终端获取到的房源通常会有拍摄实勘的需求,为了提高实勘照片质量,需要专业摄影师拍摄。由于专业摄影师比较稀缺,为了减少投入成本,将房屋进行区域划分,并指定所属区域的摄影师为第一摄影师,而相邻区域的摄影师则配置为第二摄影师。
目前,当存在拍摄实勘需求时,采用订单派送系统指派对应的第一摄影师或第二摄影师进行拍摄,首先指派对应的第一摄影师进行拍摄,当第一摄影师无法执行拍摄任务时,再指派对应的第二摄影师进行拍摄。然而,现有的订单派送系统主要有以下两种实现方式:
第一种实现方式:开启一个定时器,定时扫描最近一段时间内的所有订单记录,然而这种方式需大量频繁扫描数据库,增加了服务器压力;同时由于订单数量较大,往往需要部署多台服务器,然而多台服务器同时扫描数据库容易造成部分订单被多次派送的问题。
第二种实现方式:针对每个订单开启一个线程,等待过程中线程一直占用,由于每个线程都会占用一定资源,如果订单量大的话会造成系统内存不足,同时随着线程的增多,系统的性能将大大降低。
有鉴于此,亟需提供一种能够减轻服务器压力并能有效提高订单派送效率的订单派送方法及系统。
技术实现要素:
本发明为了克服现有技术中订单派送系统所存在的服务器压力大且派送效率低等问题,提供一种订单派送方法及系统。
一方面,本发明提供一种订单派送方法,包括:
s1,接收经纪人终端发送的拍摄房源的订单,将所述订单派送给预设的第一摄影师终端,设置所述订单的重新派送时间,将所述订单的订单id和所述重新派送时间关联存储在有序集合中;
s2,检测所述经纪人终端和所述第一摄影师终端对所述订单的处理操作,根据检测结果确定所述订单的状态,将所述状态和所述订单id关联存储在状态记录表中;
s3,当达到所述重新派送时间时,从所述有序集合中获取所述订单id,基于所述状态记录表确定所述订单id对应的状态,当所述状态为拒单时,将所述订单重新派送给第二摄影师终端。
优选地,所述步骤s3还包括:当所述状态为未处理时,将所述订单重新派送给所述第一摄影师终端和所述第二摄影师终端。
优选地,所述步骤s3还包括:当所述状态为接单时,将所述订单id和所述重新派送时间从所述有序集合中进行删除,并向所述经纪人终端发送提示信息。
优选地,所述步骤s3还包括:当所述状态为取消时,将所述订单id和所述重新派送时间从所述有序集合中进行删除。
优选地,所述步骤s3之后还包括:设定所述订单的结束时间,将所述订单id和所述结束时间关联存储在所述有序集合中,当达到所述结束时间时,将所述订单id和所述结束时间从所述有序集合中进行删除。
优选地,所述有序集合为redissortedset。
优选地,在redis中插入lua脚本,当达到所述重新派送时间时,利用lua脚本从所述有序集合中获取所述订单id。
一方面,本发明提供一种订单派送系统,包括:
订单设置模块,用于接收经纪人终端发送的拍摄房源的订单,将所述订单派送给预设的第一摄影师终端,设置所述订单的重新派送时间,将所述订单的订单id和所述重新派送时间关联存储在有序集合中;
状态记录模块,用于检测所述经纪人终端和所述第一摄影师终端对所述订单的处理操作,根据检测结果确定所述订单的状态,将所述状态和所述订单id关联存储在状态记录表中;
重新派送模块,用于当达到所述重新派送时间时,从所述有序集合中获取所述订单id,基于所述状态记录表确定所述订单id对应的状态,当所述状态为拒单时,将所述订单重新派送给第二摄影师终端,当所述状态为未处理时,将所述订单重新派送给所述第一摄影师终端和所述第二摄影师终端。
优选地,还包括订单删除模块,用于设定所述订单的结束时间,将所述订单id和所述结束时间关联存储在所述有序集合中,当达到所述结束时间时,将所述订单id和所述结束时间从所述有序集合中进行删除。
一方面,本发明提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行所述订单派送方法。
本发明提供的一种订单派送方法及系统,在订单第一次派送给第一摄影师终端后,通过设置订单的重新派送时间,并按照重新派送时间的先后顺序,将订单的重新派送时间和订单id关联存储在有序集合中,以使得当达到订单对应的重新派送时间时,能够自动从有序集合中获取对应的订单,无需扫描大量的订单记录,减轻了服务器的负担;同时采用分布式存储的思想,通过额外的状态记录表记录订单的状态,并结合订单的状态对获取到的订单执行对应的重新派送,简化了服务器的处理逻辑,有效提高了订单的派送效率,同时确保了一定的接单率。
附图说明
图1为本发明实施例的一种订单派送方法的整体流程示意图;
图2为本发明实施例的一种订单派送系统的整体结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明实施例的一种订单派送方法的整体流程示意图,如图1所示,本发明提供一种订单派送方法,包括:
s1,接收经纪人终端发送的拍摄房源的订单,将所述订单派送给预设的第一摄影师终端,设置所述订单的重新派送时间,将所述订单的订单id和所述重新派送时间关联存储在有序集合中;
s2,检测所述经纪人终端和所述第一摄影师终端对所述订单的处理操作,根据检测结果确定所述订单的状态,将所述状态和所述订单id关联存储在状态记录表中;
s3,当达到所述重新派送时间时,从所述有序集合中获取所述订单id,基于所述状态记录表确定所述订单id对应的状态,当所述状态为拒单时,将所述订单重新派送给第二摄影师终端。
具体地,当存在房源拍摄实勘需求时,经纪人终端针对该房源拍摄实勘需求下发订单,系统接收到经纪人终端下发的订单后,根据该房源所属的区域,默认将订单派送给所属区域对应的第一摄影师终端;同时,针对每一订单设置对应的重新派送时间,并将订单对应的订单id和重新派送时间关联存储在有序集合中。其中,将每一订单的生成时间加上预设时间间隔作为每一订单对应的重新派送时间,预设时间间隔可以根据实际需求进行设置,此处不做具体限定。此外,有序集合中存储的订单包括不同时刻生成的订单,且同一时刻也可能生成多个订单,订单按照各自对应的重新派送时间的先后顺序有序地存储在有序集合中。
进一步地,在上述技术方案的基础上,当系统默认将订单派送给房源所述区域的第一摄影师终端后,在到达订单对应的重新派送时间之前,经纪人终端和第一摄影师终端均有权对订单进行处理,其中经纪人终端可以随时取消下发的订单,第一摄影师终端根据系统的派送的订单可以选择接单或拒单。在此基础上,系统将进一步检测经纪人终端和第一摄影师终端对订单的处理操作,当检测到经纪人终端执行取消订单的操作时,则确定订单的状态为取消,同时将订单的取消状态和订单对应的订单id关联存储在状态记录表中;当检测到第一摄影师终端执行接单操作时,则确定订单的状态为接单,同时将订单的接单状态和订单对应的订单id关联存储在状态记录表中;当检测到第一摄影师终端执行拒单操作时,则确定订单的状态为拒单,同时将订单的拒单状态和订单对应的订单id关联存储在状态记录表中。需要说明的是,只有经纪人终端或摄影师进行了相应处理操作的订单,其对应的状态和订单id才会存储在状态记录表中,而未做任何处理的订单,则不会在状态记录表中进行记录。
进一步地,在上述技术方案的基础上,按照有序集合中存储的订单的重新派送时间,当达到订单的重新派送时间时,系统将自动从有序集合中获取与重新派送时间对应的订单id,在获取到订单id后,系统将同时调用状态记录表,结合状态记录表确定订单id对应的状态。当查询到状态记录表中存储了相同的订单id时,则可获取该订单id对应的状态,当对应的状态为拒单时,则可初步判断第一摄影师终端无法执行订单任务,有鉴于此,系统则根据订单id将对应订单重新派送预设设置的第二摄影师终端,由第二摄影师终端代替第一摄影师终端执行订单任务。
本发明提供的一种订单派送方法,在订单第一次派送给第一摄影师终端后,通过设置订单的重新派送时间,并按照重新派送时间的先后顺序,将订单的重新派送时间和订单id关联存储在有序集合中,以使得当达到订单对应的重新派送时间时,能够自动从有序集合中获取对应的订单,无需扫描大量的订单记录,减轻了服务器的负担;同时采用分布式存储的思想,通过额外的状态记录表记录订单的状态,并结合订单的状态对获取到的订单执行对应的重新派送,简化了服务器的处理逻辑,有效提高了订单的派送效率,同时确保了一定的接单率。
基于上述任一实施例,提供一种订单派送方法,所述步骤s3还包括:当所述状态为未处理时,将所述订单重新派送给所述第一摄影师终端和所述第二摄影师终端。
具体地,当达到订单的重新派送时间时,系统将自动从有序集合中获取与重新派送时间对应的订单id,在获取到订单id后,系统将同时调用状态记录表,结合状态记录表确定订单id对应的状态。当查询到状态记录表中存储了相同的订单id时,则可获取该订单id对应的状态,若在状态记录表中没有查询到相同的订单id,则可确定该订单id对应的状态为未处理,当确定订单的状态为未处理时,则可初步判断第一摄影师终端未能及时查看到该订单,有鉴于此,系统则根据订单id将对应订单重新派送给第一摄影师终端,以使得第一摄影师终端能够重新查看到该订单,同时为了提高订单的处理效率,同时将订单派送给第二摄影师终端。
本发明提供的一种订单派送方法,在订单第一次派送给第一摄影师终端后,通过设置订单的重新派送时间,并按照重新派送时间的先后顺序,将订单的重新派送时间和订单id关联存储在有序集合中,以使得当达到订单对应的重新派送时间时,能够自动从有序集合中获取对应的订单,无需扫描大量的订单记录,减轻了服务器的负担;同时采用分布式存储的思想,通过额外的状态记录表记录订单的状态,并结合订单的状态对获取到的订单执行对应的重新派送,简化了服务器的处理逻辑,有效提高了订单的派送效率,同时确保了一定的接单率。
基于上述任一实施例,提供一种订单派送方法,所述步骤s3还包括:当所述状态为接单时,将所述订单id和所述重新派送时间从所述有序集合中进行删除,并向所述经纪人终端发送提示信息。
具体地,当达到订单的重新派送时间时,系统将自动从有序集合中获取与重新派送时间对应的订单id,在获取到订单id后,系统将同时调用状态记录表,结合状态记录表确定订单id对应的状态。当查询到状态记录表中存储了相同的订单id时,则可获取该订单id对应的状态,当对应的状态为接单时,则可确定第一摄影师终端能够执行订单任务,有鉴于此,系统则将有序集合中存储的该订单对应的订单id和重新派送时间进行删除。此时,系统还将同时向下发订单的经纪人终端发送提示信息,提示经纪人终端其下发的订单已经由对应的第一摄影师终端接单,即该订单已完成处理。
本发明提供的一种订单派送方法,当达到订单的重新派送时间时,若该订单已由对应的第一摄影师终端成功接单,则系统将从有序集合中删除与该订单相关的记录,即标识该订单已完成处理,在确保订单派送成功的同时有效降低了服务器的存储压力,有利于提高订单的整体派送效率,进而有利于提高服务器的整体性能。
基于上述任一实施例,提供一种订单派送方法,所述步骤s3还包括:当所述状态为取消时,将所述订单id和所述重新派送时间从所述有序集合中进行删除。
具体地,经纪人终端在下发订单后,在达到订单对应的重新派送时间之前,经纪人终端均有权取消对应的订单。当经纪人终端执行取消订单的操作时,系统则将订单的取消状态和订单id关联存储在状态记录表中。当达到订单的重新派送时间时,系统将自动从有序集合中获取与重新派送时间对应的订单id,在获取到订单id后,系统将同时调用状态记录表,结合状态记录表确定订单id对应的状态。当查询到状态记录表中存储了相同的订单id时,则可获取该订单id对应的状态,当对应的状态为取消时,则可确定经纪人终端已取消了该订单,有鉴于此,系统则将有序集合中存储的该订单对应的订单id和重新派送时间进行删除。即不再处理该订单。
本发明提供的一种订单派送方法,当达到订单的重新派送时间时,若该订单已由对应的下单经纪人终端取消,则系统将从有序集合中删除与该订单相关的记录,即不再对该订单进行处理,有效降低了服务器的存储压力,有利于提高订单的整体派送效率,进而有利于提高服务器的整体性能。
基于上述任一实施例,提供一种订单派送方法,所述步骤s3之后还包括:设定所述订单的结束时间,将所述订单id和所述结束时间关联存储在所述有序集合中,当达到所述结束时间时,将所述订单id和所述结束时间从所述有序集合中进行删除。
具体地,当达到订单的重新派送时间时,若此时订单的状态为拒单时,则将订单重新派送给第二摄影师终端;若此时订单的状态为未处理时,则将订单重新派送给第一摄影师终端和第二摄影师终端。以上两种情况下,系统均对订单进行重新派送,对于已重新派送的订单,系统将对应设置订单的结束时间,将订单的重新派送时间加上预设的等待时间作为订单的结束时间,再将订单id和结束时间关联存储在有序集合中。其中,预设的等待时间用于等待第一摄影师终端或第二摄影师终端对订单的响应,预设的等待时间可以根据实际需求进行设置,此处不做具体限定。
进一步地,在达到订单对应的结束时间之前,系统将继续检测第一摄影师终端或第二摄影师终端对订单的处理操作,并记录订单的状态,当达到订单的结束时间时,将有序集合中存储的订单id和对应的结束时间进行删除。同时,若此时订单的状态为拒单或未处理时,向下单经纪人终端发送提示信息,提示经纪人终端该订单已超时取消。由此,针对每一订单,在进行重新派送之后,若在预设的等待时间内订单依然无人处理,则直接结束该订单的派送。
本发明提供的一种订单派送方法,在订单进行重新派送之后,针对订单设置对应的结束时间,并将订单id和结束时间关联存储在有序集合中,在达到结束时间时,将有序集合中订单对应的记录进行删除。由此,通过系统有效管理订单的整个生命周期,确保一定接单率的同时还能够避免订单的延误导致影响订单的整体派送效率,有利于提升系统的整体性能,进而有利于提升用户体验。
基于上述任一实施例,提供一种订单的派送方法,所述有序集合为redissortedset。
具体地,在上述技术方案的基础上,有序集合采用redissortedset数据结构,redissortedset和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数(score)。redis正是通过score来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但score却可以重复。
本实施例中,将订单id作为redissortedset集合中元素的唯一标识,将订单id关联存储的重新派送时间和结束时间作为元素关联的score。redissortedset是通过哈希表实现的,用sortedset可以非常快的进行添加、删除、或更新成员,其复杂度是o(m*log(n)),m是添加或查询的成员数量。因为成员是按照顺序添加的,所以可以快速地通过score或者索引进行范围查询。
本发明提供的一种订单派送方法,采用redissortedset有序集合存储订单id和对应的重新派送时间,有利于查询重新派送时间为当前时间的订单id,无需扫描大量的订单记录,减轻了服务器的负担,有利于提升订单的整体派送效率。
基于上述任一实施例,提供一种订单派送方法,在redis中插入lua脚本,当达到所述重新派送时间时,利用lua脚本从所述有序集合中获取所述订单id。
具体地,在上述技术方案的基础上,在redis中插入lua脚本,redis采用单个lua解释器去运行所有脚本,并且redis能保证脚本会以原子性(atomic)的方式执行,即当某个脚本正在运行的时候,不会有其他脚本或redis命令被执行,所以采用lua脚本能够实现zpop功能。
lua脚本实现如下:用户每次调用lua脚本执行时都会上传一个当前时间时间戳,调用zrangebyscorekeyminmax命令(返回min<score<=max的member集),例如zrangebyscorerushi_dispatch_queue-infcurrenttime(-inf表示最小,currenttime当前时间戳),由此即可从redissortedset有序集合中获取重新派送时间为当前时间的所有订单。
本发明提供的一种订单派送方法,在redis中插入lua脚本,当达到订单的重新派送时间时,利用lua脚本从有序集合中获取订单id,能够有效确保系统在从有序集合中获取相应的订单id时不会被干扰,即可确保原子性操作。
图2为本发明实施例的一种订单派送系统的整体结构示意图,如图2所示,本发明提供一种订单派送系统,包括:
订单设置模块1,用于接收经纪人终端发送的拍摄房源的订单,将所述订单派送给预设的第一摄影师终端,设置所述订单的重新派送时间,将所述订单的订单id和所述重新派送时间关联存储在有序集合中;
状态记录模块2,用于检测所述经纪人终端和所述第一摄影师终端对所述订单的处理操作,根据检测结果确定所述订单的状态,将所述状态和所述订单id关联存储在状态记录表中;
重新派送模块3,用于当达到所述重新派送时间时,从所述有序集合中获取所述订单id,基于所述状态记录表确定所述订单id对应的状态,当所述状态为拒单时,将所述订单重新派送给第二摄影师终端,当所述状态为未处理时,将所述订单重新派送给所述第一摄影师终端和所述第二摄影师终端。
具体地,当存在房源拍摄实勘需求时,经纪人终端针对该房源拍摄实勘需求下发订单,订单设置模块1接收到经纪人终端下发的订单后,根据该房源所属的区域,默认将订单派送给所属区域对应的第一摄影师终端;同时,针对每一订单设置对应的重新派送时间,并将订单对应的订单id和重新派送时间关联存储在有序集合中。其中,将每一订单的生成时间加上预设时间间隔作为每一订单对应的重新派送时间,预设时间间隔可以根据实际需求进行设置,此处不做具体限定。此外,有序集合中存储的订单包括不同时刻生成的订单,且同一时刻也可能生成多个订单,订单按照各自对应的重新派送时间的先后顺序有序地存储在有序集合中。
进一步地,在上述技术方案的基础上,当订单设置模块1默认将订单派送给房源所述区域的第一摄影师终端后,在到达订单对应的重新派送时间之前,经纪人终端和第一摄影师终端均有权对订单进行处理,其中经纪人终端可以随时取消下发的订单,第一摄影师终端根据系统的派送的订单可以选择接单或拒单。在此基础上,状态记录模块2将进一步检测经纪人终端和第一摄影师终端对订单的处理操作,当检测到经纪人终端执行取消订单的操作时,则确定订单的状态为取消,同时将订单的取消状态和订单对应的订单id关联存储在状态记录表中;当检测到第一摄影师终端执行接单操作时,则确定订单的状态为接单,同时将订单的接单状态和订单对应的订单id关联存储在状态记录表中;当检测到第一摄影师终端执行拒单操作时,则确定订单的状态为拒单,同时将订单的拒单状态和订单对应的订单id关联存储在状态记录表中。需要说明的是,只有经纪人终端或摄影师进行了相应处理操作的订单,其对应的状态和订单id才会存储在状态记录表中,而未做任何处理的订单,则不会在状态记录表中进行记录。
进一步地,在上述技术方案的基础上,按照有序集合中存储的订单的重新派送时间,当达到订单的重新派送时间时,重新派送模块3将自动从有序集合中获取与重新派送时间对应的订单id,在获取到订单id后,重新派送模块3将同时调用状态记录表,结合状态记录表确定订单id对应的状态。当查询到状态记录表中存储了相同的订单id时,则可获取该订单id对应的状态,当对应的状态为拒单时,则可初步判断第一摄影师终端无法执行订单任务,有鉴于此,重新派送模块3则根据订单id将对应订单重新派送预设设置的第二摄影师终端,由第二摄影师终端代替第一摄影师终端执行订单任务。若在状态记录表中没有查询到相同的订单id,则可确定该订单id对应的状态为未处理,当确定订单的状态为未处理时,则可初步判断第一摄影师终端未能及时查看到该订单,有鉴于此,重新派送模块3则根据订单id将对应订单重新派送给第一摄影师终端,以使得第一摄影师终端能够重新查看到该订单,同时为了提高订单的处理效率,同时将订单派送给第二摄影师终端。
本发明提供的一种订单派送系统,在订单第一次派送给第一摄影师终端后,通过设置订单的重新派送时间,并按照重新派送时间的先后顺序,将订单的重新派送时间和订单id关联存储在有序集合中,以使得当达到订单对应的重新派送时间时,能够自动从有序集合中获取对应的订单,无需扫描大量的订单记录,减轻了服务器的负担;同时采用分布式存储的思想,通过额外的状态记录表记录订单的状态,并结合订单的状态对获取到的订单执行对应的重新派送,简化了服务器的处理逻辑,有效提高了订单的派送效率,同时确保了一定的接单率。
基于上述任一实施例,提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:对于经纪人终端下发的任一订单,将订单派送给对应的第一摄影师终端,设置订单的重新派送时间,将订单的订单id和重新派送时间关联存储在有序集合中;检测经纪人终端和第一摄影师终端对订单的处理操作,根据检测结果确定订单的状态,将状态和订单id关联存储在状态记录表中;当达到重新派送时间时,从有序集合中获取订单id,基于状态记录表确定订单id对应的状态,当状态为拒单时,将订单重新派送给第二摄影师终端,当状态为未处理时,将订单重新派送给第一摄影师终端和第二摄影师终端。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。