苍穹外卖学习笔记(二十六)

ops/2024/10/22 1:57:26/

来电提醒与客户催单

用户下单并且支付成功后,需要第一时间通知外卖商家。通知方式有:

  1. 语音播报
  2. 弹出提示框

实现步骤:

  1. 通过WebSocket实现管理端页面和服务端保持长连接状态
  2. 当客户支付后,调用WebSocket的相关API实现服务端向客户端推送消息
  3. 客户端浏览器解析服务端推送的消息,判断是来电提醒还是客户催单,进行相应的消息提醒和语音播报
  4. 约定服务端发送给客户端浏览器的数据格式为JSON,字段包括:type,orderId,content
    type为消息类型,1为来单提醒 2为客户催单
    orderId为订单ID
    content为消息内容

来电提醒

OrderServerImpl

java">    @Autowiredprivate WebSocketServer webSocketServer;/*** 支付成功,修改订单状态*/@Override@Transactionalpublic 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 ,contentMap 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);}

http://www.ppmy.cn/ops/127445.html

相关文章

大一计算机课程之线性代数

《大一计算机课程之线性代数》 在大一的计算机课程中&#xff0c;线性代数是一门极为重要的基础学科&#xff0c;它就像一把神奇的钥匙&#xff0c;为计算机科学领域的诸多方面开启了智慧之门。 线性代数主要研究线性方程组、向量空间、线性变换等内容。对于计算机专业的学生…

深入拆解TomcatJetty(三)

深入拆解Tomcat&Jetty&#xff08;三&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示&#xff1a; 对组件之间的关系进行分析&#xff0c;…

【Redis】缓存预热、雪崩、击穿、穿透、过期删除策略、内存淘汰策略

Redis常见问题总结&#xff1a; Redis常见问题总结Redis缓存预热Redis缓存雪崩Redis缓存击穿Redis缓存穿透 Redis 中 key 的过期删除策略数据删除策略 Redis内存淘汰策略一、Redis对过期数据的处理&#xff08;一&#xff09;相关配置&#xff08;二&#xff09;内存淘汰流程&a…

MySQL实现分布式锁

实现分布式锁的步骤&#xff1a; ① 准备两张表&#xff08;两张表的主键相同&#xff0c;利用mysql的唯一约束实现分布式锁&#xff09;&#xff0c;一张用来存任务&#xff0c;另一张存任务的锁 ② 从任务表中获取要执行任务的数据信息 ③ 向任务锁表中插入当前任务&#xff…

05,hive

1 &#xff0c;作用 &#xff1a; 2 &#xff0c;原理 &#xff1a; 3 &#xff0c;使用场景 &#xff1a;

【JavaEE】——自定义协议方案、UDP协议

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;自定义协议 1&#xff1a;自定义协议 &#xff08;1&#xff09;交互哪些信息 &…

C#中判断的应用说明二(switch语句)

一.判断的定义说明 判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。下面是大多数编程语言中典型的判断结构的一般形式&#xff1a; 二.判…

Threejs 实现3D 地图(01)创建基本场景

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…