Skip to content

客户催单


思路分析

(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);