1. 商家平台-订单操作(添加\移除菜品) 问题同购物车操作
实现步骤:
1、判定订单待支付状态才可操作
2、判定菜品处于起售状态才可操作
3、锁定订单
4、操作订单项
4.1、添加可核算订单项
4.2、移除可核算订单项
5、计算订单总金额
6、修改订单总金额
7、返回新订单信息
订单加锁是防止前端也在操作(前端加的也是同一个锁)
remove的减一操作时,订单就算没有也不会删除订单项,保留数量为0,(留痕)留一条记录(与购物车不同)
2. 转台需要满足什么条件?
1、桌台状态:当前桌台【使用中】、目标桌台【空闲中】
2、目标桌台,不能是当前桌台
3. 转台为什么需要加分布式锁? 怎么添加?
目标桌台的id加锁;
防止目标桌台开桌
- 扩展:
这里不需要加分布式事务;这里没有调用RPC远程调用,使用的是同一个数据库
4. 转台业务流程?
5. 订单结算的状态有哪些?
订单状态【DFK待付款,FKZ付款中,QXDD取消订单,YJS已结算,MD免单,GZ挂账】
6. 结算时,为什么需要根据订单生成交易单?
1、交易单是专门用于对接交易支付系统
2、订单和具体业务相关,交易单和业务无关, 解耦
3、交易系统是一个通用支付服务
支付服务:对外提供的接口统一参数是 交易单VO对象
对接系统: 餐掌柜需要将订单转换成 交易单,远程调用交易支付服务
根据订单生成交易单的优点:
● 项目解耦,设计成通用的支付服务
● 支付失败时,基于原始订单可以重新生成新的交易单发起新的支付
● 使用交易单,可以设计合并支付的功能
7. 退款满足条件是什么?
1、订单处于【已结算】,才可退款
2、退款金额不能超过实付款
3、收款人与退款人必须是同一个人,如果不同不可退款