System Architecture Diagram
架构问题与解决方案
用户点餐过程中,可能出现如下问题:
- 用户点餐未支付就离开餐厅,是否应该为用户保存未支付订单?
- 将菜品加入购物车即退出网页,再次进入是否应该保存刚刚加入的菜品?
- 多个顾客是否可以同时点菜?拼桌怎么解决?
最开始的设计是,为了方便用户使用,不需要用户登录即可点餐;同时,为每一桌维持一个会话,保存未完成的订单,即未上菜的订单的状态,以保证用户退出后再进入对订单进行催单等操作。
不过这样一来造成了许多其他的问题。比如如上所举,上述问题均可由各种提示和超时来解决,如购物车保存超时,拼桌提示,共同点单提示等等,但是这显然增加了系统设计成本与不稳定性,同时减少登陆步骤带来的便利性也被抵消。
所以最后还是采用了微信登陆步骤,用账户维持用户的购物车、订单记录,以灵活应对用户离开、换餐厅、催单等各类场景。
逻辑视图

物理视图
