有没有“远程多态”?
先说下业务场景,一个外卖系统,会卖现做吃食以及包装好的零食酒水。
- 有订单,订单分线下订单,线上美团订单,线上饮了么订单…等。
- 收到订单后由人工转交给其他的处理程序
- 可能交给后厨现做,可能交给采购买完直接发给顾客,可能交给仓库直接取货发给顾客。
按如下方式设计基础模型
- 线下订单( order_offline) 有订单ID (id)。订单编号(order_sn)。
- 线上美团订单( order_meituan) 有订单ID (id)。订单编号(order_sn)。
- 线上美团订单( order_ele) 有订单ID (id)。订单编号(order_sn)。
- 后厨(kitchen), 有上级订单(ParentOrder)
- 采购员(buyer), 有上级订单(ParentOrder)
- 库房(store), 有上级订单(ParentOrder)
现在的要求是
- 使用
Eloquent
模型来定义。 - 通过订单可以快速查找到转交给谁处理了,以及转交后处理的详情,比如转给后厨了能关联到后厨表以展示后厨表中的厨师和操作状态等。
- 后厨、采购、库房之类,要能快速找到他们处理的订单的原始详情(线下,美团)。
- 可以使用模型的关联
save
和update
简化新建保存和更新过程。 - 订单与处理程序是一对一的,也就一个订单如果交给后厨了,就一定不会再给库房。一个订单只会在后厨处理程序中生成一条加工主记录。一条后厨加工主记录必定有且只有一条订单(线下,线上美团,饿了么之一)与之对应。
初步分析了一下,一个订单可能交给三个处理程序之一, 一个处理程序的单据可能来自三个来源订单之一。
是不是需要在订单与转交程序间设计一个中间表?如果设计中间表的话,有远程一对一,但远程一对一的两个模型是确定的,并不多态。
所以,需要一个远程多态?还是需要如何设计这个模型?
推荐文章: