redis实现未支付时间超时就删除订单,并给前端反应一个已过期

1.创建订单缓存,设置过期时间为一分钟

now 是一个表示当前时间的对象,offset 方法用于对当前时间进行偏移。
redisTemplate.expireAt(paymentKey, now.offset(DateField.SECOND, 60));

2.创建KeyExpiredListener类并且继承KeyExpirationEventMessageListener,用于监听Redis缓存过期。

在里面实现onMessage来实现键过期进行的回调函数

 

 @Override@Transactional//修改记录public void onMessage(Message message, byte[] pattern) {//获取过期数据的KeyString key = message.toString();//判断过期的数据是否为挂号单if (key.startsWith("registration_payment_")) {//从Key中提取挂号单流水号String outTradeNo = key.split("_")[2];//更新挂号支付订单状态为4medicalRegistrationDao.discardPayment(outTradeNo);//出诊计划已挂号人数减去1doctorWorkPlanDao.releaseNumByOutTradeNo(outTradeNo);//出诊时段已挂号人数减去1doctorWorkPlanScheduleDao.releaseNumByOutTradeNo(outTradeNo);//删除缓存中的已挂号人数//查询挂号单的workPlanId和scheduleIdHashMap map = medicalRegistrationDao.searchWorkPlanIdAndScheduleId(outTradeNo);int scheduleId = MapUtil.getInt(map, "doctorScheduleId");int workPlanId = MapUtil.getInt(map, "workPlanId");key = "doctor_schedule_" + scheduleId;//出诊时间段的缓存if (redisTemplate.hasKey(key)) {//存在没有过期//更新缓存中已挂号人数的数量减去1redisTemplate.opsForHash().increment(key, "num", -1);}}//super.onMessage(message, pattern);super.onMessage(message, pattern);}

上面是我写的代码,就是过期调用 DAO 层的方法,更新挂号支付订单状态为 4,表示订单已废弃。分别调用 DAO 层的方法,将对应的出诊计划和出诊时段的已挂号人数减去 1。因为我这个项目最多同一时段只能挂号三个人、

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

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

相关文章

安装Fake UserAgent 库的方法最终解答!_Python库

安装Python库Fake UserAgent 我的环境:Window10,Python3.7,Anaconda3,Pycharm2023.1.3 Fake UserAgent Fake UserAgent 是一个Python库,用于生成随机或特定的用户代理(UserAgent)字符串。用户…

明日周刊-第7期

转眼间就又快到了五一假期,小长假有什么计划吗。封面配图是杭州高架上的月季花,非常好看。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 鸿蒙系统持续扩大影响力:近期,华为官方宣布广东省已有超过600款应用加入鸿蒙系统&…

【自用】个人の画版规范

供电 总结起来就是:从正面看。从左到右的顺序是 VCC GND VEE,若是单电源则是VEE GND GND。 尽量用3p的。 XH2.54 接线端子

每天五分钟机器学习:神经网络模型参数的选择

本文重点 在深度学习和人工智能的浪潮中,神经网络作为其中的核心力量,发挥着举足轻重的作用。然而,神经网络的性能并非一蹴而就,而是需要经过精心的参数选择和调优。 神经网络由大量的神经元组成,每个神经元之间通过权重进行连接。这些权重,以及神经元的偏置、激活函数…

大模型prompt engineering api开发

项目目标 1.熟悉 LangChain,Rag等大模型开发开源知识, 2.了解llm开发的全部流程,独立开发个人的小助手。 环境配置 使用conda 独立分配一个环境 conda create -n llm-universe conda activate llm-universe cd 项目文件夹 pip install -r requir…

如何使k8s命令补全

文章目录 如果是centos系统 直接执行下面的命令即可 yum -y install bash-completionsource /usr/share/bash-completion/bash_completion source <(kubectl completion bash)kubectl get nodeskubectl completion bash > ~/.kube/completion.bash.incsource /root/.kub…

9.Eureka服务发现+Ribbon+RestTemplate服务调用

order-service服务通过服务名称来代替 ip:port的方式访问user-service服务的接口。 原来的请求代码&#xff1a; Service public class OrderServiceImpl implements OrderService {Autowiredprivate OrderMapper orderMapper;Autowiredprivate RestTemplate restTemplate;Ov…

Java-IDEA-类注释快捷键

1 需求 2 接口 3 示例 File-->Settings-->Editor-->File and Code Templaes中的Class /*** ClassName: ${NAME}* Description: TODO* Author: TODO* Version: TODO* Date: ${DATE} ${TIME}*/ 4 参考资料 IDEA设置类快捷注释_idea add to custom tags-CSDN博客 IDE…

react ts redux 的配置和使用、解决浏览器刷新后数据不存在

安装 npm i reduxjs/toolkit react-redux浏览器插件 - Redux DevTools(推荐但不强制使用 src 下创建 store&#xff0c;其中 index.ts/index.js 作为modules中所有store的集合 store/index.ts配置 import { configureStore } from reduxjs/toolkitconst store configureStor…

JMeter--定时器--同步定时器

一、集合点 集合点是测试脚本中的一个标记&#xff0c;当每个虚拟用户执行到标记处时&#xff0c;会停留在标记处等待其他的虚拟用户&#xff0c;当达到预期设置的并发数时&#xff0c;标记处的所有用户同时启动执行后续的请求&#xff1b; 集合点会产生瞬间高并发&#xff0c;…

PHP反序列化漏洞原理(附带pikachu靶场演示)

1.反序列化概念 序列化:是将变量转换为可保存或传输的字符串的过程;实现函数是serialize()反序列化:就是在适当的时候把这个字符串再转化成原来的变量使用&#xff0c;就是序列化的逆过程。实现函数是unserialize() 直白一点就是&#xff1a;序列化是把对象转换成字节流&#…

SpringAOP从入门到源码分析大全(四)SpringAOP的源码分析

文章目录 系列文档索引六、EnableAspectJAutoProxy源码分析1、AnnotationAwareAspectJAutoProxyCreator源码&#xff08;1&#xff09;wrapIfNecessary方法&#xff08;2&#xff09;createProxy 2、getAdvicesAndAdvisorsForBean查找所有Advisor&#xff08;1&#xff09;find…

深入理解CAS机制-基础使用与三大问题

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. 原子性问题 3. 乐观锁与悲观锁 4. CAS操作 5. CAS算法带来的三大…

Dynamic Wallpaper for Mac激活版:视频动态壁纸软件

Dynamic Wallpaper for Mac 是一款为Mac电脑量身打造的视频动态壁纸应用&#xff0c;为您的桌面带来无限生机和创意。这款应用提供了丰富多样的视频壁纸选择&#xff0c;涵盖了自然风景、抽象艺术、科幻奇观等多种主题&#xff0c;让您的桌面成为一幅活生生的艺术画作。 Dynami…

基于SpringCloudAlibaba的微服务稳定性设计

胡弦&#xff0c;视频号2023年度优秀创作者&#xff0c;互联网大厂P8技术专家&#xff0c;Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者&#xff0c;资深架构师&#xff0c;技术负责人&#xff0c;极客时间训练营讲师&#xff0c;四…

【教程】MySQL数据库学习笔记(五)——约束(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

Linux基本命令之正则表达式(转义字符)

一&#xff1a;查看二进制文件 strings 命令&#xff1a;strings 文件名 生成链接文件 ln 命令&#xff1a;ln 选项 源文件(f1) 链接文件&#xff08;f2&#xff09; 软连接&#xff1a;eg:ln -s f1 f2 软链接不能跨分区链接&#xff0c;但可以在同一分区的不同目录下链接…

go+react实现远程vCenter虚拟机管理终端

文章目录 React-VcenterDemoQuick Start React-Vcenter 基于go & react实现远程vSphere vcenter虚拟机终端console页面&#xff0c;提供与vcenter管理中的Launch Web Console相同的功能。 项目地址&#xff1a;react-vcenter Demo URL: http://localhost:3000 Quick St…

3-氨基苯硼酸接枝的透明质酸(HA-PBA)和聚乙烯醇(PVA )水凝胶负载胶束和药物

3-氨基苯硼酸接枝的透明质酸&#xff08;HA-PBA&#xff09;和聚乙烯醇&#xff08;PVA &#xff09;水凝胶负载胶束和药物 苯硼酸酯交联形成水凝胶的步骤&#xff1a; HA-PBA的制备&#xff1a;首先&#xff0c;3-氨基苯硼酸通过与透明质酸&#xff08;HA&#xff09;中的羧基…

关于Gitea 的简单介绍

在数字化时代&#xff0c;代码托管已成为软件开发的不可或缺的一部分。对于开源项目或企业内部开发团队而言&#xff0c;选择一款合适的代码托管平台至关重要。Gitea&#xff0c;作为一款开源的轻量级代码托管平台&#xff0c;以其易用性、高性能和灵活性&#xff0c;受到了越来…