《苍穹外卖》项目学习记录-Day10来单提醒

type:用来标识消息的类型,比如说type=1表示来单提醒,type=2表示客户催单。

orderId:表示订单id,因为不管是来单提醒还是客户催单,这一次提醒都对应一个订单。是用户下了某个单或者催促某个订单,这个时候才会有相应的提醒,具体当前提醒的是哪个订单,我们也需要把这个订单id给提交过来。

content:表示具体的提醒内容,提示框会显示文字,这些文字就是我们具体推过来的这个内容content。

它是先请求到来nginx,由nginx反向代理转发到了我们后端,也就是说WebSocket这一次请求通过nginx进行了一次转发,才转发到了后端。前提是我们提前在nginx配置好了这个路径,这样客户端跟服务端握好手了,这个长连接就建立好了。

当用户下单并且支付成功之后,需要给商家推送消息。

java 复制代码
    /**
     * 支付成功,修改订单状态
     *
     * @param outTradeNo
     */
    public void paySuccess(String outTradeNo) {

        // 根据订单号查询订单
        Orders ordersDB = orderMapper.getByNumber(outTradeNo);

        // 根据订单id更新订单的状态、支付方式、支付状态、结账时间
        Orders orders = Orders.builder()
                .id(ordersDB.getId())
                .status(Orders.TO_BE_CONFIRMED)
                .payStatus(Orders.PAID)
                .checkoutTime(LocalDateTime.now())
                .build();
        orderMapper.update(orders);
        //通过websocket向客户端浏览器推送消息 type orderId content
        Map map = new HashMap();
        map.put("type",1);//1表示来单提醒 2表示客户催单
        map.put("orderId",ordersDB.getId());
        map.put("content","订单号:" + outTradeNo);
        String json = JSON.toJSONString(map);
        webSocketServer.sendToAllClient(json);
    }
java 复制代码
 /**
     * 群发
     *
     * @param message
     */
    public void sendToAllClient(String message) {
        Collection<Session> sessions = sessionMap.values();
        for (Session session : sessions) {
            try {
                //服务器向客户端发送消息
                session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

·功能测试

相关推荐
云上艺旅1 天前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得2051 天前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西1 天前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ1 天前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL000751 天前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆1 天前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
Three~stone1 天前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦1 天前
HTML 音频(Audio)学习笔记
学习
瞌睡不来1 天前
(学习总结32)Linux 基础 IO
linux·学习·io
Moonnnn.1 天前
运算放大器(四)滤波电路(滤波器)
笔记·学习·硬件工程