苍穹外卖--客户催单

需求分析

用户在小程序中点击催单按钮后,需要第一时间通知外卖商家

设计思路:*

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

代码开发

Controller层

根据用户催单的接口定义,在user/OrderController中创建催单方法:

	/*** 用户催单** @param id* @return*/@GetMapping("/reminder/{id}")@ApiOperation("用户催单")public Result reminder(@PathVariable("id") Long id) {orderService.reminder(id);return Result.success();}
Service层接口

在OrderService接口中声明reminder方法:

	/*** 用户催单* @param id*/void reminder(Long id);
Service层实现类

在OrderServiceImpl中实现reminder方法:

	/*** 用户催单** @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));}

Mapper层

在OrderMapper中添加getById:

	/*** 根据id查询订单* @param id*/@Select("select * from orders where id=#{id}")Orders getById(Long id);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【超全】JavaScript知识速查:JavaScript ES6标准语法

JavaScript知识速查 文章目录 JavaScript知识速查[toc]JavaScript ES6标准语法1. 变量和常量以及块级区域变量 (let):常量 (const): 2. 模板字符串3. 解构赋值数组解构:对象解构: 4. 数组和对象的扩展扩展运算符 (...):Array.from:Object.assign: 5. 类和对象定义类:继承: 6.箭…

Redis主从与哨兵架构详解

目录 主从架构 主从环境搭建 主从复制流程 1. 全量复制 2. 部分复制 主从风暴 哨兵架构 概念 哨兵环境搭建 主从架构 主从环境搭建 1. 复制一份redis.conf文件, 修改下面几行配置 port 6380 pidfile /var/run/redis_6380.pid logfile "6380.log" dir /usr/…

基于A*的网格地图最短路径问题求解

基于A*的网格地图最短路径问题求解 一、A*算法介绍、原理及步骤二、Dijkstra算法和A*的区别三、A*算法应用场景四、启发函数五、距离六、基于A*的网格地图最短路径问题求解实例分析完整代码 七、A*算法的改进思路 一、A*算法介绍、原理及步骤 A*搜索算法(A star al…

PCB走线宽度与电流的关系表

在1 oz./sq. ft.铜重量时将温度上升限制在10C。这应该可以让您大致了解如何调整PCB中的走线尺寸。 电流(A)走线宽度(mil)1102303504805110615071808220926010300 上表适用于许多通常采用标准工艺生产的PCB,其目标是非…

Python按要求从多个txt文本中提取指定数据

基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,并从每一个文本文件中,找到我们需要的指定数据,最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹,里面含有大量的.txt格…

C++概念相关练习题

目录 一、内存管理 二、运算符重载 三、this指针 四、构造&析构函数 一、内存管理 下面有关c内存分配堆栈说法错误的是( ) A.对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制 B. 对…

【数据库】数据库并发控制的目标,可串行化序列的分析,并发控制调度器模型

数据库并发控制 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更…

【稳定检索|投稿优惠】2024年生物神经工程与健康大数据国际会议(ICBNHBD 2024)

2024年生物神经工程与健康大数据国际会议(ICBNHBD 2024) 2024 International Conference on Biological Neuroengineering and Health Big Data(ICBNHBD) 一、【会议简介】 2024年生物神经工程与健康大数据国际会议(ICBNHBD 2024),这场科学盛宴,会议在中…

LeetCode刷题---汉诺塔问题

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述题目会把讲解部分分为3个部分: 1、题目解析 2、算法原理思路讲解 …

webGL开发虚拟展览方案

开发 WebGL 虚拟展览涉及到选择适当的工具、技术和框架,以及设计一个令人愉悦且互动性强的用户体验。以下是一个可能的开发方案,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.选择 Web…

【C语言】与文件有关的操作

目录 1. 前言2. 什么是文件?2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件?4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介绍5.2 对比一组函数 6. 文件的…

对 Vision Transformers 及其基于 CNN-Transformer 的变体的综述

A survey of the Vision Transformers and its CNN-Transformer based Variants 摘要1、介绍2、vit的基本概念2.1 patch嵌入2.2 位置嵌入2.2.1 绝对位置嵌入(APE)2.2.2 相对位置嵌入(RPE)2.2.3卷积位置嵌入(CPE) 2.3 注意力机制2.3.1多头自我注意(MSA) 2.4 Transformer层2.4.1 …

记录一个奇怪的文件上传问题

项目是在企业微信内打开的webview,bug出现在一个更新数据的接口,参数为FormData对象,包含图片文件 ios:没问题,一切正常 安卓: 企业微信内打开,当FormData对象中包含一张图片文件&#xff0c…

【Python标准库】json

1.json库是用来做什么的? 完全独立于程序语言的轻量文本数据交换格式,用来生成和解析json数据格式的库 2.json的2种数据结构 第一种:键值对 语法:{"key":value,,,,}第二种:有序列表 3.json和python的…

indexOf与includes区别

判断字符串或者数组中是否存在对应元素 indexOf: 查找字符串中某个字符或字符串下表的位置,找到返回第一次出现的下标, 未找到返回-1 // 不传递第二个参数: 默认从0开始 [1,2,3,4,5].indexOf(3); // 查找字符3,找到返回3所在的下…

深度学习-学习笔记记录

1、点云语义分割方法分类 分为5类:点、二维投影、体素、融合、集成 2、融合与集成的区别 融合: 概念:主要是将不同来源、类型的模型,例如深度学习、传统机器学习等,的结果或特征进行结合,以得到一个更好的模…

js 搜索记录

背景: 移动端的搜索记录,不可能通过调取接口来记录瑟,所以通过在某某.js一个文件定义和处理逻辑。 代码: //某某.js var yumingSearch {init: function () {initF7.GloblalF7.onPageInit("yumingSearch", function …

c++的set容器和map容器

set容器 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<set> #include<algorithm> using namespace std; //set不给有重复的值&#xff0c;但是插入相同的数值不会报错&#xff0c;只是不会插入进去 void test01() …

直方图均衡化实现

一 直方图均衡化的概念 直方图均衡化(Histogram Equalization)是一种**增强图像对比度**(Image Contrast)的方法&#xff0c;其主要思想是将一副图像的**灰度直方图分布**通过**累积分布函数**变成**近似均匀分布**&#xff08;直观上在某个灰阶范围内像素值保持一致 &#xf…

2023年12月02日新闻简报(国内国际)

新闻简报 每天三分钟&#xff0c;朝闻天下事。今天是&#xff1a;2023年12月02日&#xff0c;星期六&#xff0c;农历十月廿十&#xff0c;祝工作愉快&#xff0c;身体健康&#xff0c;生活喜乐&#xff1a;&#xff1a; 国内新闻 1、商务部&#xff1a;对原产于澳大利亚的进…