订单超时自动取消
项目访问链接
https://editor.momen.app/tool/dK5wjNzNOkz/WEB?code=TAZbG5fNdqaun&ref=0562398
场景与目标
- 目标:如果订单在预设时间内未付款,系统将自动把订单状态从“待支付”变更为“已取消”。
- 适用场景:订单超时取消、会员到期自动降级、会议室预订超时释放、活动报名结束自动封盘等。
- 核心逻辑:利用 定时触发器 每分钟运行一次后台 行为流,查询符合过期的记录并批量更新其状态。
实现步骤
数据存储
- 数据模型:创建一个名为
订单的表。
| 字段名称 | 类型 | 说明 |
|---|---|---|
id | 整数 | 唯一标识符(系统默认)。 |
创建时间 | 日期时间 | 记录创建时间,用作“下单时间”(系统默认)。 |
状态 | 文本 | 可选值:待支付、已支付、已取消。 |

逻辑配置
进入“行为流”模块,构建自动化逻辑。
定时触发器配置
- 在右侧面板的“触发器”部分,点击“添加”并选择 定时触发 (Schedule)。
- 开始时间 / 结束时间:定义该自动化逻辑的有效时间段。
- 设置方式:选择“快捷配置”。
- 触发频率:设置为
EVERY_MINUTE(每分钟执行一次,便于测试)。 - 在第几秒:指定确切的秒数,例如
31秒。
资源消耗提示: 定时任务生效后,行为流每执行一次,编辑器右上角的 “自动化执行剩余次数” 就会相应减 1。在配置高频定时任务(如每分钟执行)时,请务必关注剩余额度。

查询过期订单
添加一个 查询数据 节点,用于筛选需要取消的订单。
- 节点名称:修改为
查询未支付订单。 - 数据表:选择
订单。 - 过滤条件:配置以下逻辑(使用“且”连接):
状态等于待支付。创建时间小于等于DELTA公式。
- 公式设置:配置
DELTA函数计算过期阈值:- 时间:选择
当前系统时间 (系统)。 - 方法:选择
减少。 - 分:输入
1(表示 1 分钟超时)。
- 时间:选择

循环批量更新状态
使用循环节点处理查询到的所有结果。
- 添加循环:在查询节点下方连接一个 循环 节点。数据源选择
查询未支付订单的输出结果。 - 更新数据:在循环内部添加一个 更新数据 节点,重命名为
更新订单状态。- 数据表:选择
订单。 - 参数:将
状态设置为已取消。 - 过滤:
id等于行为流数据->循环->当前项->id。
- 数据表:选择

验证
在“数据库”面板中手动操作,观察逻辑是否生效:
- 插入测试数据:手动添加两条记录。
- 记录 A:
状态=已支付。 - 记录 B:
状态=待支付,记录其创建时间(例如 08:19:54)。
- 记录 A:
- 第一个执行周期:
- 观察时间。当系统时间到达 08:20:31 时(触发器设定的第 31 秒),记录 B 的创建时间未满 1 分钟。
- 结果:状态保持
待支付不变。
- 第二个执行周期:
- 当系统时间到达 08:21:31 时,记录 B 的已创建时长已超过 1 分钟。
- 结果:行为流成功筛选该记录。
- 最终状态:刷新数据库。可以看到记录 B 的状态已自动变为
已取消,而记录 A(已支付)不受影响。

⚠️
由于触发器是按固定周期(如每分钟的第 31 秒)运行的,一条记录实际被取消的时间可能在创建后的 1 分钟到 1 分 59 秒之间,这取决于其创建时间点相对于触发周期的位置。
Last updated on