苍穹外面day13(day10)---订单状态定时处理、来单提醒和客户催单

Spring Task

同学们可以看我这篇文章

Spring Task初学-CSDN博客

 

订单状态定时处理

新建OrderTask

/*** 定时任务类,定时处理订单状态*/
@Component
@Slf4j
public class OrderTask {@Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/@Scheduled(cron = "0 * * * * ? ") //每分钟触发一次public void processTimeoutOrder(){log.info("定时处理超市订单:{}", LocalDateTime.now());//select * from orders where status = ? and order_time < (当前时间-15分钟)LocalDateTime time = LocalDateTime.now().plusMinutes(-15);List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);if(ordersList != null && ordersList.size() > 0){for (Orders orders : ordersList) {orders.setStatus(Orders.CANCELLED);orders.setCancelReason("订单超时,自动取消");orders.setCancelTime(LocalDateTime.now());orderMapper.update(orders);}}}/*** 处理一直处于派送中状态的订单*/@Scheduled(cron = "0 0 1 * * ?") //每天凌晨1点触发一次public void processDeliveryOrder(){log.info("定时处理处于派送中的订单:{}",LocalDateTime.now());List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, LocalDateTime.now().plusHours(-1));if(ordersList != null && ordersList.size() > 0){for (Orders orders : ordersList) {orders.setStatus(Orders.COMPLETED);orderMapper.update(orders);}}}
}

WebSocket

这篇文章详细讲解了WebScoket:

WebSocket初学-CSDN博客

来单提醒

只需要在paySuccess(OrderServiceIpl中)这个方法中稍微改动一下就行了,

主要是创建了一个HashMap对象map,用于存储要发送给客户端的消息内容。type字段设置为1,表示这是一个来单提醒。 orderId字段设置为订单的ID。 content字段包含订单号的文本信息。 使用JSON库(如阿里巴巴的fastjson)将map对象转换为JSON字符串json。 调用webSocketServer的sendToAllClient方法,将JSON字符串json发送给所有连接的客户端。这通常用于实时通知客户端订单状态的变更。

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

功能测试:

 

客户催单

逻辑跟来单提醒差不多 

接口设计

user/OrdreController

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

OrderService

    /*** 催单* @param id*/void reminder(Long id);

 OrderServiceImpl

    /*** 催单* @param id*/public void reminder(Long id) {//根据id查询订单Orders ordersDB = orderMapper.getbyId(id);// 校验订单是否存在,并且状态为4if(ordersDB == null){throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Map map = new HashMap();map.put("type",2);map.put("orderId",ordersDB.getId());map.put("content","订单号:"+ordersDB.getNumber());//通过webSocketServer向客户端浏览器推送消息webSocketServer.sendToAllClient(JSON.toJSONString(map));}

功能测试

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

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

相关文章

SQL数据库备份

转载&#xff1a;数据库备份与还原 1. 以下过程为记录客户单位备份过程。 一般有E盘选择E盘备份&#xff0c;否则选择D盘备份。选中备份文件需要重命名&#xff0c;以防原文件被覆盖。切换选项&#xff0c;选中压缩备份。

网络安全入门教程(非常详细)从零基础入门到精通!

一、引言 在当今高度数字化的时代&#xff0c;网络如同一张无形的大网&#xff0c;将世界紧密连接在一起。然而&#xff0c;在这看似便捷与美好的背后&#xff0c;却隐藏着无数的风险与威胁。网络安全已成为捍卫个人隐私、企业机密乃至国家安全的关键防线。如果您怀揣着对网络世…

VSCode上安装C#环境教程

本章教程,教你如何在vscode上,可以快速运行一些基础的c#代码。 1、下载 .NET Code SDK 下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/sdk-for-vs-code?utm_source=vs-code&utm_medium=referral&utm_campaign=sdk-install 根据自己的操作系统,选择…

Java_微服务

首先介绍一下单体架构与微服务架构&#xff1a; 单体架构&#xff1a; 微服务&#xff1a; SpringCloud&#xff1a; 版本&#xff1a; 标黑部分为目前企业使用最多的版本&#xff0c;因为它支持jdk8、jdk11&#xff0c;下面使用SpringCloud也会使用这个版本。 服务拆分&…

【GLM-4开发实战】Function Call进阶实战:外部函数调用回顾

系列篇章&#x1f4a5; No.文章1【GLM-4开发实战】Function Call进阶实战&#xff1a;外部函数调用回顾2【GLM-4开发实战】Function Call进阶实战&#xff1a;常见挑战之意图识别处理3【GLM-4开发实战】Function Call进阶实战&#xff1a;常见挑战之海量函数处理4【GLM-4开发实…

黑马头条vue2.0项目实战(五)——首页—频道编辑

目录 1. 使用页面弹出层 1.1 页面弹出层简单使用 1.2 创建频道编辑组件 1.3 页面布局 2. 展示我的频道 3. 展示推荐频道列表 3.1 获取所有频道 3.2 处理展示推荐频道 4. 添加频道 5. 编辑频道 5.1 处理编辑状态 5.2 切换频道 5.3 让激活频道高亮 5.4 删除频道 6.…

基于RK3588+AI支持能源在线监测系统应用的AIOT产品方案

支持能源在线监测系统应用的AIOT产品方案 近年来&#xff0c;智慧能源行业受益于国家政策扶持、市场需求拉动和先进技术支撑呈现出了蓬勃发展态势。助推智慧能源发展&#xff0c;打造了支持能源在线监测系统应用的AIOT产品方案。 能源在线监测系统的市场潜力 随着社会经济的飞…

Python | Leetcode Python题解之第319题灯泡开关

题目&#xff1a; 题解&#xff1a; class Solution:def bulbSwitch(self, n: int) -> int:return int(sqrt(n 0.5))

C++商店管理系统

代码中使用了C11的特性 后面有些输出(cout输出的)的提示文本是英文&#xff0c;因为懒得敲中文 源码在最后面 文末投票参与一下谢谢 商品数据保存在 items.txt 用户数据保存在 users.txt 实现功能 1.添加商品&#xff08;商品ID,商品名&#xff0c;库存数量&#xff0c;价格&a…

分享一个基于人脸识别的小区物业管理系统Spring Boot(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

Liunx 小程序之进度条

Liunx 小程序之进度条 效果前提条件回车和换行缓冲区倒计时 进度条纯进度条模拟下载的进度条Progressbar.hProgressbar.cmain.cmakefile 效果 先来看效果&#xff0c;这其实是一个动态的进度条&#xff0c;后有源码&#xff0c;运行即可&#xff1a; 前提条件 在制作之前有两…

数论基础知识(上)

目录 数学符号 整除与约数 最大公约数&#xff08;gcd)和最小公倍数&#xff08;lcm) 质数 (素数) 算术基本定理&#xff08;唯一分解定理&#xff09; 约数个数 约数之和 分解质因数&#xff08;枚举法&#xff09; 试除法求约数&#xff08;枚举法&#xff09; 数学…

RTSP系列四:RTSP Server/Client实战项目

RTSP系列&#xff1a; RTSP系列一&#xff1a;RTSP协议介绍-CSDN博客 RTSP系列二&#xff1a;RTSP协议鉴权-CSDN博客 RTSP系列三&#xff1a;RTP协议介绍-CSDN博客 RTSP系列四&#xff1a;RTSP Server/Client实战项目-CSDN博客 目录 一、RTSP Server实战项目 1、准备 2、…

F4Pan网盘解析获取下载链接的工具系统源码

F4Pan网盘解析获取下载链接的工具系统源码&#xff0c;F4Pan(下称本项目)使用的接口全部来自于官方&#xff0c;无任何破坏接口的行为&#xff0c;本项目所有代码全部开源&#xff0c;仅供学习参考使用&#xff0c;请遵守相关的法律法规&#xff0c;禁止商用&#xff0c;若无视…

java+springboot+mysql校园二手书销售平台设计与实现00895-计算机毕业设计项目选题推荐(附源码)

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对校园二手书销售平台等问题&#xff0c;对校…

快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型FAQ

序言 之前已经介绍了在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE&#xff0c;私有化部署Llama3模型&#xff0c;并对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并 &#xff0c;详细内容请参考另一篇博客&#xff1a;快速体验LLaMA-Factory 私有化部署和高…

计算机网络基础 - 计算机网络和因特网(2)

计算机网络基础 计算机网络和因特网Internet 结构和 ISP分组延时、丢失和吞吐量四种分组延时分组丢失吞吐量 协议层次及其服务模型概念数据单元&#xff08;DU&#xff09;协议栈TCP/IP 协议各层次的协议数据单元IOS/OSI 参考模型 计算机网络和因特网的历史早期计算机网路&…

自动驾驶的六个级别是什么?

自动驾驶汽车和先进的驾驶辅助系统&#xff08;ADAS&#xff09;预计将帮助拯救全球数百万人的生命&#xff0c;消除拥堵&#xff0c;减少排放&#xff0c;并使我们能够在人而不是汽车周围重建城市。 自动驾驶的世界并不只由一个维度组成。从没有任何自动化到完整的自主体验&a…

偷懒神器:auto 的讲解

1. auto 的定义 在c/c11之前&#xff0c;auto用来修饰局部变量&#xff0c;表明该变量是一个自动变量&#xff0c;函数结束后该变量销毁   c11中&#xff0c;赋予auto全新的含义。其中表示&#xff1a;auto不再是一个存储类型指示符&#xff0c;而是作为一个新的类型指示符来…

熊海1.0cmsPHP代码审计

熊海1.0cmsPHP代码审计 环境搭建 下载之后直接使用phpstduy搭建就好了 工具使用 比如使用seay审计系统 sql大多数是存在的&#xff0c;但是没有文件上传&#xff0c;这个就是需要自己去验证 漏洞审计 SQL注入 有点多&#xff0c;随便拿一个举例子 就比如我们的登录页面…