在旅游系统的各种实践中,各品类资源描述方式的差异化给系统的抽象带来了很大困难,从采购、到库存、到销售的整个链路上,每个环节都要有大量的代码去解析或封装各种类型资源和产品的代码逻辑,而这些数据结构,绝大部分是本系统用不到的,只是为了传递给下游系统,所以当一个系统改动了一个字段后,各个环节的系统都要跟着改一遍,这在系统设计、开发和维护上,都带来了很多不必要的麻烦,增加了复杂度,如何减少甚至屏蔽这类困扰,降低成本,提高系统的稳定性,是一个需要重视的课题。
01
现状分析
目前,途牛涵盖了机票、酒店、门票、跟团、用车、签证、游轮等大小几十种旅游资源类型,由于属性、特点和售卖形式的不同,描述这些资源的数据结构差异也非常大。
以机票和酒店为例,数据结构分别如下(注:这只是一小部分,真实数据字段的数量是下图的两倍甚至三倍):
图:机票数据结构
图:酒店数据结构
大家可以看出,这两种资源的描述字段几乎没有相同的,这是客观存在的事实,我们无法强行统一或者合并,更何况还有很多其他不同的资源类型,所以如果想要在它们上层做抽象将十分困难。
接下来试想一个简单的业务场景:
采购系统将这两个资源生成采购单采购,完成后录入资源及库存系统,产品系统将资源封装并上架销售,客人在网站上查找然后下单到订单系统,订单系统去库存系统申请出库,结算系统到账期生成结算单给供