Spring Boot 定时任务扫描超时订单(详细实现 + 完整案例)
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
热爱技术的小郑
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨: 本文介绍通过SpringBoot定时任务实现未支付订单自动取消的完整方案,以释放被占用的资源。
关键要点:
- 定时任务扫描是处理超时订单的经典后端方案,避免资源长期占用。
- 业务流程:用户提交待支付订单 → 每30分钟扫描 → 查询创建超过30分钟且未支付的订单 → 修改状态为已取消并释放资源。
- 数据库表需包含订单状态(status)和创建时间(create_time),以判断超时。
- 实现方式:启动类添加@EnableScheduling,定时任务类使用@Scheduled(fixedDelay = 30 * 60 * 1000)注解,每30分钟执行一次。
- 业务层方法:计算当前时间前30分钟的时间点,查询未支付且创建时间早于该时间点的订单,批量取消并释放资源。
内容结构:
- 前言:指出“未支付订单自动取消”的常见业务需求,如场地预约、电商订单等,若不处理会导致资源占用、数据异常。
- 整体业务流程:用户提交订单 → 订单状态为待支付 → 数据库记录创建时间 → 定时任务每30分钟扫描 → 查询超过30分钟未支付订单 → 修改订单状态为已取消 → 释放场地资源 → 记录日志。
- 数据库设计:给出court_booking表示例,包含id、user_id、court_id、booking_date、start_time、end_time、status(0待支付/1已支付/2已取消)、create_time、update_time。
- 开启 SpringBoot 定时任务:在启动类添加@EnableScheduling注解。
- 编写定时任务类:使用@Component和@Scheduled注解,定义每30分钟执行一次的checkUnpaidOrders()方法,调用业务层。
- 对应的业务层:通过@Transactional注解实现事务控制,计算30分钟前的时间点,查询并批量更新订单状态为已取消。
文章总结: 本文提供了一个简洁、可复用的技术方案,适用于各类需要自动处理超时订单的后端系统,逻辑清晰且易于实现。
热爱技术的小郑
热爱技术的小郑
扫码关注公众号
CSDN 2022博客之星后端领域TOP 1;专家博主官方认证;全网10W+粉丝;主要用公众号分享纯干货知识,前沿技术、实战项目开发经验、优秀项目源码案例等。我坚信总有一篇文章对你有用
107 篇文章
浏览 153K
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
热爱技术的小郑的其他文章
美妆商城系统 SpringBoot + Vue 【毕业设计 资料 + 源码】
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何
Redis6入门到实战------ 一、NoSQL数据库简介
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何
超详细步骤讲解 CentOS 7 安装jdk1.8
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享?踩过的坑没必要让别人
还不知道如何在项目中订单支付接入支付宝吗???这里有一份详细的教程运行官方提供的支付案例哦!
在跑支付宝提供的支付案例Demo的时候,遇到了一些问题。支付宝提供的Demo是用Eclipse跑的JAVAEE项目。我想用IDEA来跑一下看看、结果使用习惯了Mavne管理jar包和SpringBoot项目。。。
毕业论文写作注意事项:各章节详细解析(含实例建议、纯干货知识分享~)
每到毕业季,毕业论文的编写都是一个头疼的问题。自己写的论文总是被导师以各种理由打回来、不是格式、就是内容不行等问题。严重一点的,根本不让参与最终的毕业论文答辩。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线