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

苍穹外卖day10

苍穹外卖day10

  • Spring Task
  • 订单状态定时处理
  • WebSocket
    • 应用(弹幕,网页聊天,体育实况更新,股票基金实时更新)
  • 来单题型
    • 代码实现
    • 需求分析
  • 客户催单

Spring Task

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

链接: 在线生成器

在线生成器
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

订单状态定时处理

每分钟检查一下,是否有订单超过十五分钟,如果有的话就取消

	@Scheduled(cron = "0 * * * * ?  ")public void processTimeoutOrder(){log.info("定时处理超时订单:{}", LocalDateTime.now());LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-15);//查询超时的订单 待付款List<Orders> list = orderMapper.getByStatusAndOrderTime(Orders.PENDING_PAYMENT,localDateTime);if(list != null && list.size() > 0){for(Orders orders : list){orders.setStatus(Orders.CANCELLED);orders.setCancelReason("订单超时,自动取消");orders.setCancelTime(LocalDateTime.now());}}}
@Select("select * from orders where status status = #{status} and order_time<#{orderTime}")List<Orders> getByStatusAndOrderTime(Integer status,LocalDateTime orderTime);
//处理一直在派送的订单@Scheduled(cron = "0 0 1 * * ?")public void processDeliverOrder(){log.info("定时处理派送中的订单L{}",LocalDateTime.now());LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-60);List<Orders> list = orderMapper.getByStatusAndOrderTime(Orders.DELIVERY_IN_PROGRESS,localDateTime);if(list != null && list.size() > 0){for(Orders orders : list){orders.setStatus(Orders.COMPLETED);orderMapper.update(orders);}}}

WebSocket

http是短链接,使用请求到回复的那一小段时间是连接的

在这里插入图片描述

应用(弹幕,网页聊天,体育实况更新,股票基金实时更新)

来单题型

在这里插入图片描述
需要WebSocket保持长连接
支付成功之后,调用WebSocket的相关API实现服务端向客户端推送消息
约定服务端发送给客户端浏览器的数据格式为JSON

代码实现

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向客户端浏览器推送消息Map map = new HashMap();map.put("type",1);//表示1来单提醒 2客户催单map.put("orderId",ordersDB.getId());map.put("content","订单号:"+outTradeNo);String jsonString = JSON.toJSONString(map);webSocketServer.sendToAllClient(jsonString);}

使用webSocketServer的函数进行websocket的消息传输

public void sendToAllClient(String message) {Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}

使用session去推送数据

需求分析

客户催单

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uniapp快速回顾,新学websocket连接和BLE连接
  • TinyEngine是什么?
  • 大疆秋招笔试
  • 【数学建模】MATLAB快速入门
  • 深度学习的数学之魂:传统机器学习的超越者
  • 深度学习基础—学习率衰减与局部最优问题
  • Java-Web面试题汇总
  • XML Schema 复合元素 - 仅含文本
  • Python实现水果忍者(开源)
  • Openstack 所需要的共享服务组件及核心组件
  • 代码随想录:动态规划6-10
  • TCP/IP 协议及其协议号
  • Webrtc之SDP协议
  • 20221元组
  • 在阿里云上部署 Docker并通过 Docker 安装 Dify
  • ----------
  • ES6指北【2】—— 箭头函数
  • 【Amaple教程】5. 插件
  • 2017前端实习生面试总结
  • Android开源项目规范总结
  • Apache的80端口被占用以及访问时报错403
  • Django 博客开发教程 16 - 统计文章阅读量
  • javascript从右向左截取指定位数字符的3种方法
  • js操作时间(持续更新)
  • node 版本过低
  • node-glob通配符
  • Otto开发初探——微服务依赖管理新利器
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redis中的lru算法实现
  • Redux系列x:源码分析
  • SQLServer之创建显式事务
  • 测试如何在敏捷团队中工作?
  • 构建工具 - 收藏集 - 掘金
  • 警报:线上事故之CountDownLatch的威力
  • 实习面试笔记
  • 算法-图和图算法
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 想写好前端,先练好内功
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​如何使用QGIS制作三维建筑
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (libusb) usb口自动刷新
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (汇总)os模块以及shutil模块对文件的操作
  • (小白学Java)Java简介和基本配置
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ***测试-HTTP方法
  • .jks文件(JAVA KeyStore)
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务