模型设计 -- 聚合根
可以作为聚合根的勾选无非就是车次、站点、座位、票等,但是站点和座位只是归属车次的子域,而票是一次购票的输出凭证,所以,
以车次作为聚合根是没什么异议的。

包含3个实体,分别是车次、车厢和座位。实体是需要持久化保存的。
然后基于这些基本元素,计算获得可售矩阵和可售区间,这部分数据可以持久化,也可以放入内存即可,因为只要该车次售票停止(考虑到图中可以补票、升位之类,所以一般是到达终点站后停止),该矩阵则不会再被使用,所以并不需要持久化。
下面是限额的约束,限额一般会在系统层面定义一些限额模版,然后根据模版生成每一个班次的列车限额配置。
基于可售矩阵和区间,可以形成一套售票方法,作为车次领域模型对外提供的服务方法。
当接收到乘客信息、班次、选位(有则满足,无则动态分配),然后生成车票,并锁定区间。
当支付成功后,则永久锁定该区间,直到客户发生改签行为。
这个判断相当复杂,需要对接很多外部的系统获的诸如个人信用等信息,当资格通过后,还要继续验证如:
1、同一班次只能购买一次。
2、同一人乘坐两趟列车时间是否冲突、地点是否冲突等。
作为铁路出行的唯一凭证,当然要独立作为一个领域模型,并且该模型需要外部各类系统对接。