当前位置: 首页 > article >正文

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

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

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

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

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

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

    /**
     * 支付成功,修改订单状态
     *
     * @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);
    }

 

 /**
     * 群发
     *
     * @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();
            }
        }
    }

·功能测试


http://www.kler.cn/a/528150.html

相关文章:

  • C#面试常考随笔7:什么是匿名⽅法?还有Lambda表达式?
  • 模型I/O
  • ubuntu20.04.6下运行VLC-Qt例子simple-player
  • 【C++】List的模拟实现
  • S4 HANA明确税金本币和外币之间转换汇率确定(OBC8)
  • 解析“in the wild”——编程和生活中的俚语妙用
  • 蓝桥杯备赛练习题01
  • 人生不止于职业发展
  • 缩位求和——蓝桥杯
  • Vue 与 Electron 结合开发桌面应用
  • 构建一个数据分析Agent:提升分析效率的实践
  • 蓝桥杯算法笔记|差分学习
  • 操作系统知识速记:死锁
  • SQL进阶实战技巧:某芯片工厂设备任务排产调度分析 | 间隙分析技术应用
  • SZU大学物理2实验报告|弗兰克—赫兹实验
  • DB-GPT试用
  • 如何用ChatGPT批量生成seo原创文章?TXT格式文章能否批量生成!
  • 如何切换用户
  • 实验四 XML
  • 使用 Ollama 部署 TinyLlama (1.1B) 的完整流程,包含直接拉取和手动部署两种方案
  • 电子电气架构 --- 汽车电子拓扑架构的演进过程
  • Android记事本App设计开发项目实战教程2025最新版Android Studio
  • ComfyUI中For Loop的使用
  • C++初阶 -- 手撕string类(模拟实现string类)
  • LeetCode:279.完全平方数
  • 2.1刷题日记