客户催单
思路分析
(1)通过 WebSocket 实现管理端页面和服务端保持长连接状态
(2)当用户点击催单按钮后,调用 WebSocket 的相关 API 实现服务端向客户端推送消息
(3)客户端浏览器解析服务端推送的消息,判断是来单提醒还是客户催单,进行相应的消息提示和语音播报约定服务端发送给客户端浏览器的数据格式为 JSON,字段包括:type,orderId,content
type 为消息类型,1 为来单提醒 2 为客户催单
orderId 为订单 id
content 为消息内容
代码实现
user / OrderController
根据用户催单的接口定义,在 user / OrderController 中创建催单方法
java
/**
* 用户催单
*
* @param id
* @return
*/
@GetMapping("/reminder/{id}")
@ApiOperation("用户催单")
public Result reminder(@PathVariable("id") Long id) {
orderService.reminder(id);
return Result.success();
}OrderService
在 OrderService 接口中声明 reminder 方法
java
/**
* 用户催单
* @param id
*/
void reminder(Long id);OrderServiceImpl
在 OrderServiceImpl 中实现 reminder 方法
java
/**
* 用户催单
*
* @param id
*/
public void reminder(Long id) {
// 查询订单是否存在
Orders orders = orderMapper.getById(id);
if (orders == null) {
throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND);
}
//基于WebSocket实现催单
Map map = new HashMap();
map.put("type", 2);//2代表用户催单
map.put("orderId", id);
map.put("content", "订单号:" + orders.getNumber());
webSocketServer.sendToAllClient(JSON.toJSONString(map));
}OrderMapper
在 OrderMapper 中添加 getById
java
/**
* 根据id查询订单
* @param id
*/
@Select("select * from orders where id=#{id}")
Orders getById(Long id);