来电提醒与客户催单
用户下单并且支付成功后,需要第一时间通知外卖商家。通知方式有:
- 语音播报
- 弹出提示框
实现步骤:
- 通过WebSocket实现管理端页面和服务端保持长连接状态
- 当客户支付后,调用WebSocket的相关API实现服务端向客户端推送消息
- 客户端浏览器解析服务端推送的消息,判断是来电提醒还是客户催单,进行相应的消息提醒和语音播报
- 约定服务端发送给客户端浏览器的数据格式为JSON,字段包括:type,orderId,content
type为消息类型,1为来单提醒 2为客户催单
orderId为订单ID
content为消息内容
来电提醒
OrderServerImpl
@Autowired
private WebSocketServer webSocketServer;
/**
* 支付成功,修改订单状态
*/
@Override
@Transactional
public void paySuccess(String outTradeNo) {
// 根据订单号查询订单
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Orders::getNumber, outTradeNo);
Orders ordersDB = orderMapper.selectOne(queryWrapper);
// 根据订单id更新订单的状态、支付方式、支付状态、结账时间
Orders orders = Orders.builder()
.id(ordersDB.getId())
.status(Orders.TO_BE_CONFIRMED)
.payStatus(Orders.PAID)
.checkoutTime(LocalDateTime.now())
.build();
orderMapper.updateById(orders);
//通过WebSocket向客户端发送消息 type , orderId ,content
Map map = new HashMap();
map.put("type", 1);//1表示来单提醒
map.put("orderId", ordersDB.getId());
map.put("content", "订单号: " + outTradeNo + " 有新订单,请及时处理!");
String json = JSON.toJSONString(map);
webSocketServer.sendToAllClient(json);
}