作者:手机用户2502854251 | 来源:互联网 | 2023-05-16 21:15
1. public enum Status {
TRADE(3, "交易中"),
PAY(4, "支付中"),
CANCEL(5, "取消"),
ONLINE_PAYED(6, "线上支付成功"),
CASH_PAYED(7, "现金支付成功"),
CASH_FINISH(8, "现金完成"),
ONLINE_FINISH(9, "在线完成"),
ADJUSTING(10, "订单调价中");
2.怎么理解业务中的状态. 什么情况下你会用一个字段,什么情况下你会用两个字段.
状态和流程有什么关系.
3.说说你之前工作模块.小模块内部有模块划分么 看到这种语句,从模块化的角度你有什么想法
class A xxxx{
public A(){
currentThread = new B(this);
}
}
4.你们的代码结构有反应模块划分么,如何区分模块边界.
5. 订单流. 司机状态,乘客状态.
理论上司机状态是基于订单状态计算的. 现在搞了两个字段维护: 订单状态和司机状态, 会导致数据不一致的情况发生. 这样的设计需要:
1.司机发起任何操作之后,不仅要判断司机状态和订单状态. 而且要校验二者的一致性.
2. 维护这两个字段的系统要定时检查数据一致性,并修复.
不然司机端只需要关闭端,重新打开即可.从服务端打开.
司机端的页面锁也是挺奇怪的方案. 司机端处于什么页面,都是有服务端自己决定的. 司机端自己加锁,就要保证和服务端的每个接口要保证幂等性. 当端和服务端状态不一致. 并且服务端的状态已经处于端上状态+动作的下一个状态.那么久应该返回成功,而不是返回错误码.
故:1.所有接口要对端锁的做幂等返回 2.维护方要提供一个checkAndSyncOrderStateAndDriverState()方法.供每一次调用使用.